zoukankan      html  css  js  c++  java
  • java测试类向订单表插入数据,程序没有错误运行也正常,但是查看数据库时发现数据库未插入数据怎么办?

    问题:java测试类向订单表插入数据,程序没有错误运行也正常,但是查看数据库时发现数据库未插入数据是怎么办?

    第一步,先检查确认代码无错误:

    public class OrderDaoTest {
    
        private OrderDao orderDao = new OrderDaoImpl();
    
        // 保存订单
        @Test
        public void saveOrder() {
            orderDao.saveOrder(new Order("1234123412344", new Date(), new BigDecimal(10000), 0, 1));
            orderDao.saveOrder(new Order("1234123412345", new Date(), new BigDecimal(10000), 0, 1));
            System.out.println("over");
        }
    
    }

    第二步,查看数据库连接配置文件地址是否正确:

    username=root
    password=root
    url=jdbc:mysql://localhost:3306/book
    driverClassName=com.mysql.jdbc.Driver
    initialSize=5
    maxActive=10

    第三步,查看连接数据库的工具类,看是否设置了手动提交事务:

     /**
         * 获取数据库连接池中的连接
         * @return 如果返回null,说明获取连接失败<br/>有值就是获取连接成功
         */
        public static Connection getConnection(){
            Connection conn = conns.get();
            if (conn == null) {
                try {
                    conn = dataSource.getConnection();//从数据库连接池中获取连接
                    conns.set(conn); // 保存到ThreadLocal对象中,供后面的jdbc操作使用
                    conn.setAutoCommit(false); // 设置为手动管理事务
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return conn;
        }

    数据库连接设置为手动管理事务导致测试类数据插入数据库失败解决方案:

    在测试类中手动提交事务就可以解决。

    public class OrderDaoTest {
    
        private OrderDao orderDao = new OrderDaoImpl();
    
        // 保存订单
        @Test
        public void saveOrder() {
            try {
                orderDao.saveOrder(new Order("1234123412344", new Date(), new BigDecimal(10000), 0, 1));
                orderDao.saveOrder(new Order("1234123412345", new Date(), new BigDecimal(10000), 0, 1));
                Connection conn = JdbcUtils.getConnection();
                conn.commit();
            } catch (Exception e) {
    
            }
        }
    }

    总结:此次错误主要是由于数据库连接工具类中设置了手动管理事务,在测试类里手动提交就可以了。

  • 相关阅读:
    网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)
    OSI七层模型与TCP/IP五层模型(转)
    C语言结构体指针初始化(转)
    关于空指针NULL、野指针、通用指针 (转)
    C语言的通用指针类型(void *)
    使用matlab生成用于ROM初始化的coe文件(转)
    电脑运行msi安装包提示the error code is 2503/2502如何解决
    mysql命令行修改字符编码
    struts 2 时间控件
    java 的 struts2 Spring Hibernate 三大框架的整合
  • 原文地址:https://www.cnblogs.com/lvwuwa/p/12755804.html
Copyright © 2011-2022 走看看