zoukankan      html  css  js  c++  java
  • 优化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     }

    是不是简单了很多。

    项目结构:

  • 相关阅读:
    event.relatedTarget、event.fromElement、event.toElement
    before/after伪类常见用法
    $.getJSON 跨域
    ExtJS中store.findExact
    C#生成6位随机验证码
    C#验证手机号
    jQuery轮播图的事项 代码详细,容易理解。。。。谢谢观赏
    ES6 中 static 的this 丢失问题解决办法 简单明了 备注清晰 谢谢欣赏
    ES6 中 static 的this 问题 简单明了 备注清晰 谢谢欣赏
    ES6 中用class创建img 详细明了,步骤清晰,解释完美,谢谢欣赏
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/11774025.html
Copyright © 2011-2022 走看看