ORM object relation mapping(对象关系映射)
实现思想:将关系型数据库中的表记录映射成对象,通过对象进行展示
public class User{
private Integer id;
private String name;
private String pwd;
}
数据库中表的数据
id name pwd
1 张三 123456
2 李四 123123
映射关系
类 表
对象 表的(行)记录
属性 表的(列)记录
使用mybatis
- 传统JDBC访问数据库
(1)使用jdbc时大量代码冗余
(2)sql写死在程序当中,当sql修改时 类重新编译
(3)sql执行后的结果resultSet对象,需要手动处理
2.mybatis
(1)对jdbc进行封装和简化
(2)sql和类分离 sql写在映射文件Mapper.xml中,当sql修改时 ,类不需要重新编译
(3)sql执行后的结果不需要手动处理,mybatis自动转换成Java对象(自动映射)
mybatis简单小Test
(1)创建maven工程,并导入jar包
4.0.0 com.chen mavenTestchen1.0-SNAPSHOT 添加依赖的方式: 通过快捷键ale+insert 进行搜索 www.mvnrepository.comjunit junit4.9 org.mybatis mybatis3.5.9 mysql mysql-connector-java5.1.47 org.slf4j slf4j-log4j121.7.36
(2)进行mybatis-config的文件配置
可以有多个environment 当需要用到其他的时候进行更换(通过id) mapper文件导入当有多个的时候 可以通过多个mapper标签导入 ./表示当前目录 可以省略进行事务管理的方式: 可以通过JDBC代理 MANAGER 自己管理事务 配置数据源: 连接池 JNDI:过时了 POOLED 使用连接池 UNPOOLED 不适用连接池 这里其中的 name 和 value 不要写错
(3)进行mapper文件的配置
namespace 和 select 中的 id 命名随意 但不能重复resultType指定的结果返回到什么对象的类型中
(4)pojo类和test类准备
package com.chen.pojo;
public class User {
private Integer id;
private String name;
private String job;
private Double salary;
alt+insert 快速生成get和set方法 toString方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + ''' +
", job='" + job + ''' +
", salary=" + salary +
'}';
}
}
package com.chen.test;
import com.chen.pojo.Emp;
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.util.List;
public class EmpTest {
//这里通过@Test进行运行 导包都为org.apache.ibatis 下
@Test
public void selectAll() throws IOException {
//读取配置文件 通过io流 这里可以通过.var快速生成
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//通过配置文件生成sqlSessionFactory工厂
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//通过工厂生成sqlSession 对象
SqlSession ss = ssf.openSession();
//通过对象进行sql语句的操作
List list = ss.selectList("EmpMapper.selectEmp");
for (Emp e:list){
System.out.println(e);
}
}
}
mybatis执行流程
1.先读取配置文件 mybatis-config.xml EmpMapper.xml 这里进行两个读取
2.通过配置文件创建sqlSessionFactory工厂
3.通过工厂创建sqlSession对象(连接数据库)
4.通过对象执行sql语句 namespace+id 进行sql定位
(1)找到mapper文件和找到要执行的sql语句
(2)执行sql语句 指定返回的结果用什么类型封装
(3)将数据记录到封装的对象(这里通过pojo中的set方法进行)
(4)最后返回List



