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) {
    
            }
        }
    }

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

  • 相关阅读:
    程序员生存定律--成长路上常见的坑
    程序员生存定律--升华成高手的可能方法
    程序员生存定律--如何尽快变的稍微专业一点
    程序员生存定律--编程的起点与可能的失足
    一段旅程的结束和另一端旅程的开始
    Cesium教程系列汇总
    数据可视化之总结
    可视化之Earth NullSchool
    可视化之AQICN
    可视化之Berkeley Earth
  • 原文地址:https://www.cnblogs.com/lvwuwa/p/12755804.html
Copyright © 2011-2022 走看看