优化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     }
复制代码

是不是简单了很多。

项目结构:

posted on   ~码铃薯~  阅读(456)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· 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

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示