Mybatais
Posted houguangjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatais相关的知识,希望对你有一定的参考价值。
1.架构整体设计
功能架构讲解:
我们把Mybatis的功能架构分为三层:
1. API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
2. 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
3. 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
2.Mybatis开发流程
2.1 添加Mybatis依赖
2.2 实体映射类
2.3 SQL映射文件
在src/main/resource下创建与当前表对应的SQL映射文件用于声明SQL语句
2.4 Mybatis核心配置文件
<beans>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/working?useUnicode=true&characterEncoding=utf-8" />
<property name="password" value="root" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.mapper" />
</bean>
<context:component-scan base-package="cn.service"/>
</beans>
3.执行流程
基本概述:
1. SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句,此文件需要在SqlMapConfig.xml中加载。
2. 通过mybatis环境等配置信息构造SqlSessionFactory(即会话工厂)。
3. 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
4. mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
5. MappedStatement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个MappedStatement对象,sql的id即是MappedStatement的id。
6. MappedStatement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql前将输入的java对象映射至sql中,输入参数映射就是JDBC编程中对preparedStatement设置参数。
7. MappedStatement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于JDBC编程中对结果的解析处理过程。
示例:
@Test
public void getUserTest() {
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
InputStream input = getClass().getResourceAsStream("/mybatis-context-config.xml");
SqlSessionFactory devSession = builder.build(input);
System.out.println(devSession.toString());
UserInfoMapper mapper= devSession.openSession().getMapper(UserInfoMapper.class);
UserInfo userinfo = mapper.getUser(1);
System.out.println(userinfo.toString());
Assert.assertNotNull(userinfo);
}
以上是关于Mybatais的主要内容,如果未能解决你的问题,请参考以下文章