增删改无效问题?
mybatis在我们进行增删改操作时,程序不报错,正常编译运行,但是数据库数据却没有出现变化,这是因为mybatis的事务默认是开启状态,在我们进行增删改操作后,没有提交事务,连接关闭后,就会进行回滚,这也就导致我们看起来没有操作成功
解决办法:
1.在我们操作完数据后,提交事务,sqlSession.commit()方法
// 获取SqlSession try (SqlSession sqlSession = MybatisUtil.getSqlSession()) { // 得到UserMapper对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); int i = mapper.deleteById(1); System.out.println(i); // 注意:增删改操作必须提交 sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); }
- sqlSessionFactory.openSession(ture);或者将里面参数设置为true,打开事务的自动提交功能
public class MybatisUtil { private static SqlSessionFactory sqlSessionFactory; static { try { // 获取sqlSessionFactory InputStream in = Resources.getResourceAsStream("mybatis-config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); } catch (IOException e) { e.printStackTrace(); } } /** * 获取sqlSession对象 */ public static SqlSession getSqlSession() { // 默认开启事物 // 参数设置为true,则事务可以自动提交 return sqlSessionFactory.openSession(true); } }