MyBatis
MyBatis概述
1. ORM模型简介
object relation mapping
object Mapping Relation xxx.java XML dbf 传统JDBCC程序的设计缺陷
- 大量配置信息硬编码
- 大量的无关业务处理的编码
- 扩展优化极为不便
2. MyBatis概述
MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架
- 避免传统JDBC硬编码
- XML配置或者注解
- POJO对象和数据库记录直接映射
- 完善的文档支持
3.MyBatis使用优势及应用场景
使用优势
- 简单易学、快速上手、学习成本低
- 数据库交互信息配置化
- 动态SQL处理
使用场景
更加关注SQL优化的项目
需求频繁更新改动的项目
MyBatis的环境搭建
MyBatis的下载
http://www.mybatis.org/mybatis-3/
项目中引入MyBatis支持
maven方式引入
- 查询配置
- http://mvnrepositiry.com查询maven依赖配置
- maven项目的pom.xml中添加配置
- 查看项目依赖
- 了解maven本地仓库
入门程序(MyBatis核心API操作过程)
mybatis配置
mybatis.xml主配置文件(从文档中获取再更改)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test1?serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="mjj666123"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/usersMapper.xml"></mapper> </mappers> </configuration>
***Mapper.xml映射配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace 命名空间 通常情况,命名空间的值,就是当前操作实体类的全名称 --> <mapper namespace="mjj.Users"> <select id="usersList" resultType="mjj.Users"> select * from tb1 </select> </mapper>
实体类Users(重写tostring()方法进行输出)
package mjj;
public class Users {
private Integer id;
private String user;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", user='" + user + '\'' +
", password='" + password + '\'' +
'}';
}
public void setPassword(String password) {
this.password = password;
}
}
- Testdemo(连接数据库)
import mjj.Users;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
public class Testdemo {
@Test
public void testDemo1() throws IOException {
String resource ="mybatis.xml";
InputStream is=Resources.getResourceAsStream(resource);
//主配置文件和SqlSessionFactory构建工厂类
SqlSessionFactory factory=
new SqlSessionFactoryBuilder().build(is);
//打开和数据库的会话
SqlSession session=factory.openSession();
List<Users> ulist= session.selectList("usersList");
for(Users user:ulist){
System.out.println(user.toString());
}
//关闭会话
session.close();
}
}
项目案例演示
项目案列演示
后台管理系统用户数据维护平台
- 所有用户数据查询
- 单个用户数据查询
- 用户数据修改
- 锁定用户账号
- 删除用户账号
- 彻底删除用户账号
数据库数据准备工作
界面准备工作
MyBatis基础操作
了解MyBatis的工作原理
基础操作——主配置解析
properties配置加载
properties配置,用于加载外部的properties配置文件
environments环境配置
environments:主要用于数据源的配置,可以配置多个数据源
通过default属性来指定当前项目运行过程中使用的是哪个数据源
environment:用于配置一个具体的独立的数据源
id属性用于给当前数据源定义一个名称,方便我们项目指定
transactionManager:用于配置事务管理,默认情况下使用的是JDBC事务管理
dataSource:具体数据源的链接信息;type属性用于指定是否使用连接池
settings参数设置配置
typeAliases别名设置
mapper映射加载
mappers:主要用于配置我们外部的映射配置文件,在主配置文件中需要引入加载映射配置文件
基础操作——映射配置文件
mapper 用于定义一个映射配置文件的根节点
namespace属性是用来配置命名空间,主要进行session级别的缓存,命名空间默认情况下,使用我们当前操作的实体类全路径
基础操作——查询数据
- 映射配置:sql片段
- 映射配置:select配置
- 特殊配置:字段和属性不一致时resultMap配置
Mybatis四大对象
Mybatis核心对象
- ParameterHandler:处理SQL的参数对象
- ResultSetHandler:处理SQL的返回结果集
- StatementHandler:数据库的处理对象,用于执行SQL语句
- Executor:Mybatis的执行器, 用于执行增删改查操作
Mybatis插件原理
- Mybatis的插件借助于责任链的模式进行对拦截的处理
- 使用动态代理对目标对象进行包装,达到拦截的目的
- 作用于Mybatis的作用域对象之上
Mybatis插件开发
Mybatis插件借口-Interceptor
- Intercept方法,插件的核心方法
- 使用plugin方法,生成target的代理对象
- setProperties方法,配置所有参数
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!