文档章节

mybatis解析

xiejunbo
 xiejunbo
发布于 2015/03/03 02:03
字数 621
阅读 37
收藏 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
粉丝 43
博文 149
码字总数 132149
作品 0
广州
后端工程师
私信 提问
10 个 MyBatis 常见面试题

#{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换。 Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; Mybatis在处理${}时,就是把${}替换成...

蚂蚁-Declan
10/25
0
0
源码分析 Mybatis 的 foreach 为什么会出现性能问题

背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一...

TSMYK
今天
0
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 Mapper.xml 配置文件中 resultMap 节点的源码解析

相关文章 Mybatis 解析配置文件的源码解析 Mybatis 类型转换源码分析 Mybatis 数据源和数据库连接池源码解析(DataSource) Mybatis Mapper 接口源码解析(binding包) Mybatis 解析 SQL 源码...

tsmyk0715
11/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Caffe(二)-Python-自定义网络

这里我们用一个例子先来体验一下 首先定义一下我们的环境变量 $PYTHONPATH,我这儿是Windows开发环境,至于Windows Caffe怎么编译由读者自己下去搞定 我使用的控制台是 Windows PowerShell 添...

Pulsar-V
51分钟前
5
0
ActiveMQ从入门到精通(二)之可靠性机制

ActiveMQ的可靠性机制 缘由( 确认JMS消息) 只要消息被确认之后,才认为消息被成功消费了。消息的成功消费包括三个阶段:客户端接收消息、客户端处理消息以及客户端确认消息。在事务性会话中...

一看就喷亏的小猿
58分钟前
4
0
源码分析 Mybatis 的 foreach 为什么会出现性能问题

背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一...

TSMYK
今天
8
0
IC-CAD Methodology企业实战之openlava

在云计算解决安全问题并成为IC界主流运算平台之前,私有的服务器集群系统仍然是各大IC公司的计算资源平台首选。 现在主流的服务器集群管理系统包括lsf,openlava,SkyForm,三者都属于lsf一系...

李艳青1987
今天
8
0
http response stream 字节流 接收与解码

在接收图片、音频、视频的时候,需要用到二进制流。 浏览器会发给客户端 字节Byte流,一串串的发过来_int8格式 -128~127(十进制),也就是8bit(位)。 客户端接收的时候,对接收到的字节收集,...

大灰狼wow
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部