通过对mybatis框架的中核心接口和类的分析,发现之前写的那个小demo是有问题的。现在对其进行部分优化。

如果存在多个功能的时候,势必会有很多重复的代码,如,创建sqlsession对象,关闭sqlsession会话等等,现在就对其进行优化

编写MyBatisUtil.java工具类

 package cn.smbms.utils;

 import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil {
//在整个应用的生命周期内只会有一个SqlSessionFactory实例,只会创建一次
private static SqlSessionFactory factory=null;
//SqlSession openSession;
//创建静态代码块
//创建sqlsessionfactory工厂
static{
String resource="mybatis-config.xml"; try {
InputStream stream = Resources.getResourceAsStream(resource);
factory = new SqlSessionFactoryBuilder().build(stream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } //创建sqlsession对象
public static SqlSession createSqlSession(){
SqlSession openSession = factory.openSession(false);//true表示的是自动提交事物 false关闭自动提交事物
return openSession;
}
//关闭sqlsession会话
public static void closeSqlSession(SqlSession sqlSession){
if(sqlSession!=null){
sqlSession.close();
}
} }

改造之前的测试方法:

     //对之前的进行改造
@Test
public void test2(){ int count=0;
SqlSession sqlSession=null; try {
sqlSession = MyBatisUtil.createSqlSession();
//调用mapper文件来对数据库进行操作,必须先把mapper文件引入到mybatis-config.xml中
count = (Integer)sqlSession.selectOne("cn.smbms.dao.user.UerMapper.count");
mlogger.info("用户表中的记录数:"+count); } catch (Exception e) {
// TODO: handle exception
}finally{
//最后一定要注意:关闭会话
MyBatisUtil.closeSqlSession(sqlSession); } }

是不是简单了很多。

项目结构:

优化mybatis框架中的查询用户记录数的案例的更多相关文章

  1. Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264301.html     http://www.cnblogs.com/xdp-gacl/p/4264425.ht ...

  2. 详解Java的MyBatis框架中SQL语句映射部分的编写

    这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...

  3. 项目一:第十三天 1、菜单数据管理 2、权限数据管理 3、角色数据管理 4、用户数据管理 5、在realm中动态查询用户权限,角色 6、Shiro中整合ehcache缓存权限数据

    1 课程计划 菜单数据管理 权限数据管理 角色数据管理 用户数据管理 在realm中动态查询用户权限,角色 Shiro中整合ehcache缓存权限数据         2 菜单数据添加 2.1 使用c ...

  4. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

  5. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

  6. mybatis框架中XxxxMaper.xml的文件

    我们知道在mybatis框架中,config.xml中会关联到许多的XxxxMapper的xml文件,这些文件又对应着一个个的接口,来观察下这些xml文件 从以下这个文件为例子: <?xml v ...

  7. Oracle查询数据库中所有表的记录数

    1.Oracle查询数据库中所有表的记录数,但是有可能不准建议用第二种方式进行查询 select t.table_name,t.num_rows from user_tables t 2.创建orac ...

  8. TP框架中field查询字段

    TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是file ...

  9. TP框架中模糊查询实现

    TP框架中模糊查询实现 $where['g.name'] = array('like','%'.$groupname.'%'); 表达式查询 上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式 ...

随机推荐

  1. 028 SSM综合练习04--数据后台管理系统--订单相关操作

    1.订单表及其关联表的关系分析 2.数据库表对应实体类 (1)Orders.java package lucky.domain; import lucky.utils.DateUtils; impor ...

  2. SQL Server中的GAM页和SGAM页

    简介 我们已经知道SQL Server IO最小的单位是页,连续的8个页是一个区.SQL Server需要一种方式来知道其所管辖的数据库中的空间使用情况,这就是GAM页和SGAM页. Global A ...

  3. [转帖]POW , POS 与 DPOS 一切都为了共识

    POW , POS 与 DPOS 一切都为了共识 https://www.jianshu.com/p/f99e8fe57c9a   共识机制的背景 加密货币都是去中心化的,去中心化的基础就是P2P节点 ...

  4. [转帖]两大容器管理平台,Kubernetes与OpenShift有什么区别?

    两大容器管理平台,Kubernetes与OpenShift有什么区别? https://www.sohu.com/a/327413642_100159565 原来openshift 就是 k8s的一个 ...

  5. 抽象工厂(AbstractFactory)模式

    抽象工厂模式又称工具箱模式.其实抽象工厂模式可以简单的理解为一个工厂生成一个产品族的产品. 抽象工厂模式可以向客户端提供一个接口,使得客户端在不指定产品的具体类型的情况下,创建多个产品族中的产品对象. ...

  6. springcloud使用之断路器hystrix

    上一篇文章提到我们最近开了个新项目,目的是将新的业务放到新项目中,老项目单独维护,再逐步迁移老项目到新项目里.但就在前端时间生产环境发生了一个事故,事故开始的异常是我们的业务发现前端h5页面办理很慢, ...

  7. GitLab+Jenkins持续集成

    一.概述 GitLab是一个代码仓库,用来管理代码.Jenkins是一个自动化服务器,可以运行各种自动化构建.测试或部署任务.所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins ...

  8. ubuntu Django + Uwsgi + Nginx 的生产环境部署

    一.概述 使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇 ...

  9. Java jms学习

    /** * <html> * <body> * <P> https://github.com/Jasonandy </p> * <p> Al ...

  10. [SDOI2008]仪仗队(欧拉函数)

    题目 [SDOI2008]仪仗队 解析 这个题,我也不知道他们的soltion是怎么写的这么长的. 我们发现我们一次看一条直线上的第一个点,也就是说,若两个点斜率\(k=\frac{y}{x}\)相同 ...