MyBatis添加数据到数据库--只有主键添加了--但看不到数据

问题描述:在mybatis里面配配好的开发环境如下:
纯mybatis框架 使用了工具类来SqlSessionFactory.openSession();





 



    

    

       

    

    

       

    

    

    

       

       

           

           

           

           

       

    





    






写好了ProductMapper.xml SQL映射文件:



 



 

    

       insert
into product(model,price,createDate) values(#{model},#{price},#{createDate})

    

 


也就是一句简简单单的数据插入到数据的语句,但是在调试时!console窗口显示操作是成功的,无任何报错,但成功的后面有下面几句



[DEBUG]
2018-11-10 23:16:23,102 org.apache.ibatis.transaction.jdbc.JdbcTransaction -
Rolling back JDBC Connection [com.mysql.jdbc.JDBC4Connection@5d36f93f]

[DEBUG]
2018-11-10 23:16:23,102 org.apache.ibatis.transaction.jdbc.JdbcTransaction -
Resetting autocommit to true on JDBC Connection
[com.mysql.jdbc.JDBC4Connection@5d36f93f]

[DEBUG]
2018-11-10 23:16:23,102 org.apache.ibatis.transaction.jdbc.JdbcTransaction -
Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@5d36f93f]

[DEBUG]
2018-11-10 23:16:23,102 org.apache.ibatis.datasource.pooled.PooledDataSource -
Returned connection 1563883839 to pool.

[DEBUG]
2018-11-10 23:16:23,102 test.ProductMapperTest - 新增成功:3


貌似是数据添加成功了,可去数据库查看数据,发现根本没有数据,后来直接在数据库用SQL语插入了一行数据,发现主键竞然不是从1开始(主键是auto_increment的属性的),而是从4开始的,然后又回mybatis里跑了一遍测试方法(方法里一次是添加三条数据的),再回到数据库重新用SQL语插入了一行数据,这次主键变成了8,反复测试,得出的结论是:mybatis里数据操作是成功了的,把数据库的主键也添加,但数据未提交到数据库,应该是rollback了,后面几经调试,最终发现了问题所在,

原来在用openSqlSession()方法时没有传参,这里的参数是boolean类型,不传参的情况下默认为false,则在执行完sql语句后需手动提交,即需使用sqlSession.commit()方法,这便是解决方案一:执行完sql语句后,使用sqlSession.commit()方法手动提交

解决方案二:在使用openSqlSession()方法时传入参数true;即openSqlSession(true),则为自动提交事务:

最后大功告成:



[DEBUG]
2018-11-10 23:25:51,158 com.smbms.dao.ProductMapper.addProduct - ooo Using
Connection [com.mysql.jdbc.JDBC4Connection@446759c6]

[DEBUG]
2018-11-10 23:25:51,158 com.smbms.dao.ProductMapper.addProduct - ==>  Preparing: insert into
product(model,price,createDate) values(?,?,?) 

[DEBUG]
2018-11-10 23:25:51,158 com.smbms.dao.ProductMapper.addProduct - ==>
Parameters: CDMA-2(String), 2356.23(Double), 2018-11-10 23:25:50.71(Timestamp)

[DEBUG]
2018-11-10 23:25:51,158 com.smbms.dao.ProductMapper.addProduct - ooo Using
Connection [com.mysql.jdbc.JDBC4Connection@446759c6]

[DEBUG]
2018-11-10 23:25:51,158 com.smbms.dao.ProductMapper.addProduct - ==>  Preparing: insert into product(model,price,createDate)
values(?,?,?) 

[DEBUG]
2018-11-10 23:25:51,158 com.smbms.dao.ProductMapper.addProduct - ==>
Parameters: CDMA-3(String), 2200.23(Double), 2008-08-08 00:00:00.0(Timestamp)

[DEBUG]
2018-11-10 23:25:51,158 org.apache.ibatis.transaction.jdbc.JdbcTransaction -
Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@446759c6]

[DEBUG]
2018-11-10 23:25:51,158 org.apache.ibatis.datasource.pooled.PooledDataSource -
Returned connection 1147623878 to pool.

[DEBUG]
2018-11-10 23:25:51,158 test.ProductMapperTest - 新增成功:3


数据库里数据也添加进去了;

MyBatis添加数据到数据库--只有主键添加了--但看不到数据_第1张图片

你可能感兴趣的:(java)