文档章节

mybatis解析

xiejunbo
 xiejunbo
发布于 2015/03/03 02:03
字数 621
阅读 34
收藏 0
点赞 0
评论 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初始化机制详解

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

jason_wu_2
2016/12/01
22
0
解析mybatis配置文件

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

挽袖清风
2017/12/03
2
0
Mybatis3.4.x技术内幕(二十三):Mybatis面试问题集锦(大结局)

Mybatis技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用Mybatis的文章,所以,一些参数使用细节略掉了,我们的目...

祖大俊
2016/09/17
10.9K
34
解析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
Java面试----2018年MyBatis常见实用面试题整理

Java面试----2018年MyBatis常见实用面试题整理 1、什么是MyBatis? 答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存...

优惠券活动
04/29
0
0
MyBatis整合Spring的实现(3)

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

tara_qri
2015/10/25
66
0
mybatis-plus 2.1.1-SNAPSHOT,代号:小锅盖

mybatis-plus 是一款 mybatis 动态 SQL 自动注入 mybatis 增删改查 CURD 操作中间件。让 mybatis 拥有 hibernate 的单表高效,也保留 xml sql 的灵动。 代号: 真正身份是改变社会风气,风魔...

青苗
2017/09/04
1K
8
mybatis--总结

1.mybatis简介 mybatis是一个基于java的持久层框架,支持普通sql查询/存储过程/对象映射,它使用xml配置或者注解配置来做映射,将普通java对象映射到数据库中。 2.mybatis功能分层 2.1api接口...

求是科技
2016/10/12
26
0
MyBatis整合Spring的实现(8)

1 方法settingsElement private void settingsElement(XNode context) throws Exception { if (context != null) { Properties props = context.getChildrenAsProperties(); // Check that......

tara_qri
2015/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring-@RequestBody

@RequestMapping("/login")    public void login(@RequestBody String userName,@RequestBody String pwd){      System.out.println(userName+" :"+pwd);    }    ......

说回答
4分钟前
0
0
Redis安装

大家可以通过该链接获取安装详情(这是一个Word文档,支持下载): http://note.youdao.com/noteshare?id=7a327ed6c58fb2037ba537e58ecf7510&sub=480DB8EF349747C3983B73AE94D45BB1 其他参考...

一梦心草
4分钟前
0
0
MySQL按天,按周,按月,按时间段统计【转载】

https://blog.csdn.net/qq_28056641/article/details/78306870 select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(creat......

李道福
6分钟前
0
0
浅谈parallelStream

parallelStream是什么,它是一个集合的并发处理流.其作用是把一个集合中的数据分片,进行一个多线程的处理,增快运行速度. 比如说这样一段代码 private Set<SysRole> sysRoles;private Set<St...

算法之名
8分钟前
2
0
器者,道之所载

形而上者谓之道,形而下者谓之器,化而裁之谓之变;推而行之谓之通,举而措之天下之民,谓之事业。—— 《道德经》

了凡川
10分钟前
0
0
C#命名规范中文版/C#编码规范中文版

最新文档地址https://github.com/hiramtan/CSharpNamingGuidelines_Chinese C#命名规范中文版/C#编码规范中文版 示例 /*****************************************************************......

海贝Hibey
11分钟前
0
0
刚从eclipse转到Intellij IDEA,分享一些配置经验

刚从eclipse转到Intellij IDEA,分享一些配置经验,IntelliJ IDEA作为最好的Java开发工具,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等...

舒文joven
12分钟前
1
0
lombok 引入后,测试类始终找不到get,set方法。

开发环境为idea,jdk1.7,maven3.5. 网上直接搜出来的方法有: 1、在setting里安装lombok的plugins; 2、如下图,勾选enable annocation processing选项 3、升级maven plugins插件 我尝试了以...

Kidult
18分钟前
0
0
Duang,HUAWEI DevEco IDE全面升级啦

想感受全新UI带来的视觉及交互体验、 HiKey970开发板调测、 HiAI API推荐和收藏、 深度AI模型分析等新功能, 体验高清晰度和流畅度的远程AI真机调测吗? 全新的UI设计 采用最优秀的视觉及交互...

华为终端开放实验室
27分钟前
1
0
阻止事件冒泡,阻止默认事件

1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event....

闫亚亚
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部