系列文章目录
MyBatis的简介
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索(消除JDBC中的冗余代码)(MyBatis是对JDBC的封装)。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。Mybatis最大的优点就是完成了SQL语句与Java代码的解耦(分离)让开发人员对于持久层的操作仅仅关注SQL就可以了。一、MyBatis的运行原理和执行流程?
执行流程
(1)加载配置并初始化
触发条件:加载配置文件
将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)处理操作请求 触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
©获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、最简配通MyBatis
项目工程目录
导jar包,构建,这是单体项目需要这样弄,SpringBoot项目直接在pom.xml导入依赖即可。
1、创建Dept类,ste(),get()方法省略。。
public class Dept {
private Integer deptno;
private String dname;
private String loc;
}
2、创建Util工具类,读取mybatis.xml配置文件。
public class MybatisUtil {
private static SqlSessionFactory ssf ;
static
{
//读取Mybatis配置文件
try {
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//创建SqlSessionFactory
ssf = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static SqlSession getSqlSession()
{
return ssf.openSession(true);//返回SqlSession该SqlSession会自动提交事务
}
3、创建Mapper.xml文件,配置sql语句、以及返回参数。
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dept">
<select id="a" resultType="java.util.Map">
select * from dept
</select>
</mapper>
4、创建数据层IDeptDao接口。
package com.zrrd.dao;
import java.util.List;
import java.util.Map;
public interface IDeptDao {
//查询这个表所有结果集
public List<Map<String,Object>> deptQuery();
}
5、DeptDaoImpl接口的实现逻辑
public class DeptDaoImpl implements IDeptDao {
@Override
public List<Map<String, Object>> deptQuery() {
SqlSession session=MybatisUtil.getSqlSession();
//dept.a的意思是对相应Mapper.xml文件:dept这个表;a是id
List<Map<String,Object>> deptlist=session.selectList("dept.a");
return deptlist;
}
}
6、配置数据源,整合Mapper.xml路径。
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="aa">
<environment id="aa">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/MySql"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/zrrd/mapper/mapper.xml"/>
</mappers>
</configuration>
7、编写Test测试类。
package com.zrrd.Text;
import com.zrrd.dao.DeptDaoImpl;
import com.zrrd.dao.IDeptDao;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
IDeptDao deptdao=new DeptDaoImpl();
List<Map<String,Object>> dept=deptdao.deptQuery();
System.out.println(dept);
}
}
启动输出结果。。。。。。。
总结
这里已经简述了Mybatis框架的应用和搭建步骤,用select查询作为例子进行开发,可根据业务需求在mapper,xml文件中写sql,对应上相应的接口即可。