mybatis--总结

#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配置文件java

<!-- 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等spring

@Service
public class CommonServiceImpl implements CommonService {

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

3.2SQL解析
当api接口层收到调用请求时,会传入须要执行的SQL的方法与参数,示例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>在参数映射存在的时候经过参数构造方法来实例化。数据库

相关文章
相关标签/搜索