文档章节

mybatis--总结

求是科技
 求是科技
发布于 2016/10/12 15:27
字数 570
阅读 45
收藏 2

#1.mybatis简介
mybatis是一个基于java的持久层框架,支持普通sql查询/存储过程/对象映射,它使用xml配置或者注解配置来做映射,将普通java对象映射到数据库中。
#2.mybatis功能分层
2.1api接口层:xx.mapper,它提供给外部开发人员使用,开发人员通过使用这些api来操作数据库。
2.2数据处理层:xx.mapping,它负责SQL查找/解析/执行等操作,以及返回结果映射处理。
2.3基础支撑层:包括数据库连接、事务管理、配置加载等。
#3.mybatis执行流程
3.1加载spring-mybatis配置文件

	<!-- sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="mapperLocations" value="classpath:com/readygo/missBang/mapper/*.xml" />
	</bean>
	<!-- 自动扫描 将Mapper接口生成代理注入到Spring-->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.readygo.missBang.mapper" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>

详解配置
1>加载配置文件时,会new一个SqlSessionFactory的实例,该实例有两个属性
1.dataSource:初始化数据库配置信息
2.mapperLocations:初始化所有的xxMapper.xml(即上述提到的xx.mapping),完成预编译,将结果存放到JDBC中的preparedStatement类中。
3.扫描所有的mybatis接口,即xxMapper.java,将接口注入到spring中,实际上是初始化所有的接口,示例如下,如初始化SysInfoMapper等

@Service
public class CommonServiceImpl implements CommonService {

	@Autowired
	private SysInfoMapper sysInfoMapper;
	@Autowired
	private LocationMapper locationMapper;

3.2SQL解析
当api接口层收到调用请求时,会传入需要执行的SQL的方法与参数,示例

userMapper.selectCount(phoneNumber);

接口为userMapper,传入方法selectCount,参数phoneNumber。
mybatis会根据SQL的id去预编译的存储类(preparedStatement)的映射文件中去查找该id,找到了,传入SQL参数,然后对整个SQL语句进行解析,解析成最终要执行的SQL语句。
3.3SQL执行
将SQL语句送进数据库执行,返回执行结果。
3.4结果映射(resultMap/resultType) 执行完sql语句,mybatis会使用一个对象工厂(ObjectFactory)实例来处理结果映射。该对象工厂需要做的事情是实例化目标类,通过两种方式实例化目标类:1>通过默认构造方法;2>在参数映射存在的时候通过参数构造方法来实例化。

© 著作权归作者所有

上一篇: spring--
求是科技

求是科技

粉丝 100
博文 455
码字总数 238818
作品 0
成都
后端工程师
私信 提问
【持久化框架】Mybatis与Hibernate的详细对比

前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理。 Mybatis 【持久化框架】Mybatis简介与原理 【持久化框架】Spr...

sietai
2018/05/18
129
0
【Java框架】 Hibernate与Mybatis对比

Hibernate与Mybatis对比 今天同事跟我说现在的小规模公司很少用hibernate,大部分都用mybatis。平时也经常接触这两方面,正好最近不怎么忙,查看网上其他相关技术文档 ,梳理下Mybatis和Hib...

林元煌
2017/07/05
0
0
Mybatis总结

什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”...

u013043341
2017/07/30
0
0
Mybatis[批量]插入返回自增ID

简介 最近在业务功能中需要获取mybatis插入的数据并且返回插入数据的ID,去执行其他的操作,说来也很简单,在正常的insert标签里面加入提供的其他属性即可实现,故现在抽时间整理出来,希望能...

阿郎_
2017/05/23
0
0
Mybatis缓存(1)--------系统缓存及简单配置介绍

前言 Mybatis的缓存主要有两种: 系统缓存,也就是我们一级缓存与二级缓存; 自定义的缓存,比如Redis、Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍。 在这里主要记录系统缓...

JJian
2018/07/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【0911】linux软件包安装和卸载

【0911】linux软件包安装和卸载 一、安装软件包的三种方法 1、rpm工具:与win中的exe安装包类似,红帽子公司包管理系统 2、yum工具:属于一种用python开发的工具,支持自动的安装依赖的包 3、...

飞翔的竹蜻蜓
27分钟前
3
0
【外行学IT】手机网页自适应之rem和viewport

在写手机网页时,对于像素的问题会非常困惑,初学者很多时候会因为那么一个小点的问题解决不了,或者无法理解透彻就放弃了学习。 我在学习写手机网页时也困惑了许久,出现过下面的问题: 图片...

前端老手
38分钟前
5
0
三、Java设计模式之单一职责原则

定义:不要存在多于一个导致类变更的原因。 一个类、接口、方法只负责一项职责 优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险

东风破2019
45分钟前
4
0
搭建高可用MongoDB集群(分片)

搭建高可用MongoDB集群(分片) KaliArch关注1人评论28269人阅读2017-12-04 21:57:41 MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:https:/...

linjin200
今天
6
0
Pandas DataFrame创建方法大全

Pandas是Python的数据分析利器,DataFrame是Pandas进行数据分析的基本结构,可以把DataFrame视为一个二维数据表,每一行都表示一个数据记录。本文将介绍创建Pandas DataFrame的6种方法。 创建...

汇智网教程
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部