优化mybatis框架中的查询用户记录数的案例
通过对mybatis框架的中核心接口和类的分析,发现之前写的那个小demo是有问题的。现在对其进行部分优化。
如果存在多个功能的时候,势必会有很多重复的代码,如,创建sqlsession对象,关闭sqlsession会话等等,现在就对其进行优化
编写MyBatisUtil.java工具类
1 package cn.smbms.utils; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 6 import org.apache.ibatis.io.Resources; 7 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 12 public class MyBatisUtil { 13 //在整个应用的生命周期内只会有一个SqlSessionFactory实例,只会创建一次 14 private static SqlSessionFactory factory=null; 15 //SqlSession openSession; 16 //创建静态代码块 17 //创建sqlsessionfactory工厂 18 static{ 19 String resource="mybatis-config.xml"; 20 21 try { 22 InputStream stream = Resources.getResourceAsStream(resource); 23 factory = new SqlSessionFactoryBuilder().build(stream); 24 } catch (IOException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 } 28 29 } 30 31 //创建sqlsession对象 32 public static SqlSession createSqlSession(){ 33 SqlSession openSession = factory.openSession(false);//true表示的是自动提交事物 false关闭自动提交事物 34 return openSession; 35 } 36 //关闭sqlsession会话 37 public static void closeSqlSession(SqlSession sqlSession){ 38 if(sqlSession!=null){ 39 sqlSession.close(); 40 } 41 } 42 43 }
改造之前的测试方法:
1 //对之前的进行改造 2 @Test 3 public void test2(){ 4 5 int count=0; 6 SqlSession sqlSession=null; 7 8 try { 9 sqlSession = MyBatisUtil.createSqlSession(); 10 //调用mapper文件来对数据库进行操作,必须先把mapper文件引入到mybatis-config.xml中 11 count = (Integer)sqlSession.selectOne("cn.smbms.dao.user.UerMapper.count"); 12 mlogger.info("用户表中的记录数:"+count); 13 14 } catch (Exception e) { 15 // TODO: handle exception 16 }finally{ 17 //最后一定要注意:关闭会话 18 MyBatisUtil.closeSqlSession(sqlSession); 19 20 } 21 22 23 24 }
是不是简单了很多。
项目结构:
分类:
mybatis框架
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY