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     }

    是不是简单了很多。

    项目结构:

  • 相关阅读:
    mvc+struct1+struct2
    JSP中动态include与静态include的区别
    村上春树的经典语录合集
    50. 数组剔除元素后的乘积
    46. 主元素
    Centos7:yum安装MySQL5.7后如何设置root密码
    产品经理人的持续交付和DevOps实践
    利用jenkins实现自动构建、部署,提升团队开发效率
    基于lua-nginx-module(openresty)的WEB应用防火墙
    Nginx+Lua+MySQL/Redis实现高性能动态网页展现
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/11774025.html
Copyright © 2011-2022 走看看