sqlSessionc操作数据库增删改无效问题
增删改无效问题?
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);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!