获取Java的MyBatis框架项目中的SqlSession的方法

 更新时间:2016年06月01日 16:10:29   作者:fhd001  
SqlSession中包括已经映射好的SQL语句,这样对象实例就可以直接拿过来用了,那么这里就来讲解获取Java的MyBatis框架项目中的SqlSession的方法

从XML中构建SqlSessionFactory
从XML文件中构建SqlSessionFactory的实例非常简单。这里建议你使用类路径下的资源文件来配置.

String resource = "org/mybatis/example/Configuration.xml";  
Reader reader = Resources.getResourceAsReader(resource);  
sqlMapper = new SqlSessionFactoryBuilder().build(reader);  

XML配置文件包含对MyBatis系统的核心设置,包含获取数据库连接实例的数据源和决定事务范围和控制的事务管理器。如例:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-config.dtd">  
<configuration>  
  <environments default="development">  
    <environment id="development">  
      <transactionManager type="JDBC"/>  
      <dataSource type="POOLED">  
        <property name="driver" value="${driver}"/>  
        <property name="url" value="${url}"/>  
        <property name="username" value="${username}"/>  
        <property name="password" value="${password}"/>  
      </dataSource>  
    </environment>  
  </environments>  
  <mappers>  
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>  
  </mappers>  
</configuration>  

当然,在XML配置文件中还有很多可以配置的,上面的示例指出的则是最关键的部分。

从SqlSessionFactory中获取SqlSession
现在,我们已经知道如何获取SqlSessionFactory对象了,基于同样的启示,我们就可以获得SqlSession的实例了。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法。你可以用SqlSession实例来直接执行已映射的SQL 语句。例如:

SqlSession session = sqlMapper.openSession();  
try{  
  Blog blog = (Blog)session.selectOne("org.mybatis.example.BlogMapper.selectBlog",101);  
}finally{  
  session.close();  
}  

现在有一种更简洁的方法。使用合理描述参数和SQL语句返回值的接口(比如BlogMapper.class),这样现在就更简单,更安全的代码,没有容易发生的字符串文字和转换的错误。例如:

SqlSession session = sqlSessionFactory.openSession();  
try {  
  BlogMapper mapper = session.getMapper(BlogMapper.class);  
  Blog blog = mapper.selectBlog(101);  
}finally{  
  session.close();  
} 

探究已映射的SQL语句
这里给出一个基于XML映射语句的示例,这些语句应该可以满足上述示例中SqlSession对象的调用。

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
<mapper namespace="org.mybatis.example.BlogMapper">  
  <select id="selectBlog" parameterType="int" resultType="Blog">  
    select * from Blog where id = #{id}  
  </select>  
</mapper>  

在命名空间“com.mybatis.example.BlogMapper”中,它定义了一个名为“selectBlog”的映射语句,这样它允许你使用完全限定名“org.mybatis.example.BlogMapper.selectBlog”来调用映射语句,我们下面示例中的写法也就是这样的。

Blog blog = (Blog)session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);  

但下面的调用更有优势:
映射接口对应映射xml文件的命令空间,接口方法对应映射xml文件中定义的SQL映射的ID。???????????

BlogMapper mapper = session.getMapper(BlogMapper.class);  
Blog blog = mapper.selectBlog(101);  

首先它不是基于文字的,那就更安全了。第二,如果你的IDE有代码补全功能,那么你可以利用它来操纵已映射的SQL语句。第三,不需要强制类型转换,同时BlogMapper接口可以保持简洁,返回值类型很安全(参数类型也很安全)。

相关文章

  • 浅谈java多态的实现主要体现在哪些方面

    浅谈java多态的实现主要体现在哪些方面

    下面小编就为大家带来一篇浅谈java多态的实现主要体现在哪些方面。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • OpenCV Java实现人脸识别和裁剪功能

    OpenCV Java实现人脸识别和裁剪功能

    这篇文章主要为大家详细介绍了OpenCV Java实现人脸识别和裁剪功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 你知道在Java中Integer和int的这些区别吗?

    你知道在Java中Integer和int的这些区别吗?

    最近面试,突然被问道,说一下Integer和int的区别.额…可能平时就知道写一些业务代码,包括面试的一些Spring源码等,对于这种特别基础的反而忽略了,导致面试的时候突然被问到反而不知道怎么回答了.哎,还是乖乖再看看底层基础,顺带记录一下把 ,需要的朋友可以参考下
    2021-06-06
  • jedis操作redis的几种常见方式总结

    jedis操作redis的几种常见方式总结

    Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Java Grpc实例创建负载均衡详解

    Java Grpc实例创建负载均衡详解

    这篇文章主要介绍了Java Grpc实例创建负载均衡详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • java代码规范review异常事故记录

    java代码规范review异常事故记录

    这篇文章主要为大家介绍了java代码规范关于异常review代码发生异常的事故记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Java中的HashMap和ConcurrentHashMap区别和适用场景

    Java中的HashMap和ConcurrentHashMap区别和适用场景

    HashMap和ConcurrentHashMap在对null值的处理、线程安全性、性能等方面存在显著的区别,HashMap允许键和值为null,适用于单线程环境下的数据存储和查询场景;而ConcurrentHashMap不允许键和值为null,适用多线程环境下的数据存储和查询场景,具有线程安全性和较高的并发性能
    2025-01-01
  • Java实现聊天机器人完善版

    Java实现聊天机器人完善版

    这篇文章主要为大家详细介绍了Java实现聊天机器人完善版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • SpringBoot+Logback实现一个简单的链路追踪功能

    SpringBoot+Logback实现一个简单的链路追踪功能

    Spring Boot默认使用LogBack日志系统,并且已经引入了相关的jar包,所以我们无需任何配置便可以使用LogBack打印日志。这篇文章主要介绍了SpringBoot+Logback实现一个简单的链路追踪功能,需要的朋友可以参考下
    2019-10-10
  • java服务自动停止原因查找方式

    java服务自动停止原因查找方式

    这篇文章主要介绍了java服务自动停止原因查找方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论