文档章节

mybatis解析

xiejunbo
 xiejunbo
发布于 2015/03/03 02:03
字数 621
阅读 35
收藏 0

一、SqlSession的使用方法

SqlSession通过 SqlSessionFactory来创建,sqlSessionFactory是线程安全的,sqlSessionFactory通常使用单例来管理。如果和spring整合后,通过spring容器以单例方式来管理sqlSessionFactory.

SqlSession是面向用户的接口,定义了操作数据库的方法(selectOne,selectList,insert,update,delete).

sqlSession的接口实现类是线程不安全的,SqlSession不能在类中定义为成员变量来使用,最佳使用场合是方法体内定义一个局部变量。

二、spring和mybatis整合

在spring的配置文件中定义SqlSessionFactory,如果和spring整合,sqlSessionFactory的类不是mybatis框架本身的类org.apache.ibatis.session.SqlSessionFactory,而是mybatis-spring-1.2.2.jar包中的SqlSessionFactory.

第一步:加入相关依赖包:spring的依赖包,mybatis-spring.jar整合包,+数据依赖包+其他包。

第二步:配置mybatis配置文件。

第三步:配置spring配置文件。

配置 SqlSessionFactory,dataSource,mapper.

原始DAO开发方法:

程序员要编写dao接口和DAO实现类,需要在DAO实现类中注入SqlSessionFactory.

将SqlSessionFactory让spring容器使用单例模式管理。

Dao实现类继承org.mybatis.spring.support.SqlSessionDaoSupport.和spring整合后,由于继承SqlSessionDaoSuppor通过Spring注入会话工厂SqlSessionFactory,在dao实现类中不需要人为关闭SqlSession.

动态代理方法:

使用mybatis提供的动态代理方法创建mapper对象,只需开发mapper接口和mapper映射文件,且mapper接口和mapper映射文件需要遵循一些规则:

  1. Mapper接口方法名和mapper.xml中定义的每个sql的id相同。

  2. Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同。

  3. Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。

  4. Mapper.xml文件中的namespace即是mapper接口的类路径。

在spring容器中配置 mapper的扫描器,由扫描器扫描出mapper接口和mapper的映射文件,从而动态生成mapper接口的动态代理对象(mapper的实现类的对象),产生的动态代理对象在spring的容器中自动注册。一个扫描顺可以扫描出多个mapper接口,可以生成多个mapper动态代理对象 。

三、动态SQL.

自定义查询条件,查询用户信息(一个列表)。

查询单个用户列表信息和用户列表总数使用相同的查询条件。

用户列表和用户列表总数可以分页实现 。

==================================================




© 著作权归作者所有

共有 人打赏支持
xiejunbo
粉丝 41
博文 150
码字总数 132363
作品 0
广州
后端工程师
MyBatis整合Spring的实现(6)

分析 MyBatis整合Spring的实现(3)中可以知道,XMLConfigBuilder类读取MyBatis的全局配置文件信息转成Document,具体的把Document转成JAVA类,做了哪些操作呢?下面就来分析XMLConfigBuilde...

tara_qri
2015/10/25
82
0
解析mybatis配置文件

最近一直想写一个mybatis 类似的ORM框架。先从模仿mybatis开始。 先从解析mybatis配置文件开始(简化版解析部分属性,后面会完善的) 下面是mybatis的配置文件 <?xml version="1.0" encoding...

挽袖清风
2017/12/03
2
0
《深入理解mybatis原理》 Mybatis初始化机制详解

对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建Configu...

jason_wu_2
2016/12/01
22
0
解析MyBatis配置文件mybatis-config.xml(一)

mybatis 配置文件 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration <!-- 配置文件的根元素 --><configuration> </configuration> Mybatis 在初始化过程......

挽袖清风
2017/12/10
3
0
MyBatis整合Spring的实现(3)

分析 MyBatis整合Spring的实现(2)中属性可以知道,XPathParser类在XMLConfigBuilder中充当了非常重要的角色,下面就来分析XPathParser的作用。 1 属性 1.1 XPathParser属性: /** 整个XML...

tara_qri
2015/10/25
66
0

没有更多内容

加载失败,请刷新页面

加载更多

Hadoop - 企业级大数据管理平台CDH(小技巧一)

附上: 喵了个咪的博客:w-blog.cn cloudera官网: https://www.cloudera.com/ 官方文档地址: https://www.cloudera.com/documentation/enterprise/latest.html 一 , 磁盘扩容磁盘迁移 对于磁盘...

喵了_个咪
6分钟前
0
0
手动安装android的sdk

手动安装android的sdk 用eclipse+sdk的方式开发app,使用android sdk manager无法下载新的sdk,可以手动下载安装。 查找sdk的地址 浏览器访问https://dl-ssl.google.com/android/repository/...

kyle960
7分钟前
0
0
call方法的模拟实现

call方法的模拟实现 初步思考 const person = { name:"小明" } function sayName() { console.log(this.name) } sayName.call(person) //result: 小明 上面的代码有两...

lsner
11分钟前
0
0
apache 报错 AH01089: search for temporary

程序上传文件一直失败。经过测试使用apache反向代理会失败,但是直接访问服务器则可以上传。 经过分析apache的错误日志发现如下提示: apache 报错 AH01089: search for temporary director...

硕硕和果果
16分钟前
1
0
java源码Integer.bitCount算法解析,分析原理

看了一道leetcode上面的题 461 ,Hamming Distance 计算两个整数有多少不同的位。其实很简单,取两个整数异或的值,然后计算出里面二进制有多少个1就行了。代码如下: public int hammi...

117
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部