一、概述:
MyBatis是一个基于ORM的半自动的持久层框架,支持定制SQL、存储过程及高级映射。
优点:避免了JDBC大部分的代码编写、手动设置参数和获取结果集;可以简单使用XML或注解来配置和映射原生类型、接口和java的POJO;半自动化,核心Sql可以自己优化,sql和java代码分离,功能明确。
注:ORM——对象/关系数据库映射,框架实现的效果:把对持久化对象的保存、修改、删除等操作,转换为对数据库的操作。
二、快速开发demo
1、搭建环境,引入MyBatis依赖
org.mybatis mybatis 3.4.5 mysql mysql-connector-java 5.1.6 runtime
2、编写实体类
public class User {
private Integer id;
private String userName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + ''' +
'}';
}
}
3、创建映射配置文件
select * from user
4、创建核心配置文件
5、编写测试类
@Test
public void selectAllUsers() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
List userList = sqlSession.selectList("user.findAll");
for (User user: userList ) {
System.out.println(user);
}
}
三、核心配置文件解释
1、层级关系
2、常用配置
(1)environments: 数据库环境配置,支持多环境配置
transactionManager :事物管理器,有两种类型—JDBC、MANAGED
JDBC:使用JDBC提交和回滚设置,依赖于从数据源得到的连接来管理事物作用域;MANAGED:从来不提交和回滚一个连接,让容器来管理事物的整个生命周期,默认情况下会关闭连接,不需要默认关闭时需要将“closeConnection”属性设置为false。
(2)dataSource :数据源,类型有三种—UNPOOLED、POOLED、JNDIUNPOOLED:不使用线程池,每次都要重新获取连接,关闭连接;POOLED:使用线程池,将JDBC对象组织起来;JNDI:这个数据源的实现是为了能在如 EJB 或应⽤服务器这类容器中使⽤,容器可以集中或在外部配置数据源,然后放置⼀个 JNDI 上下⽂的引⽤。
(3)mapper:加载映射,加载方式有4种:使⽤相对于类路径的资源引⽤,例如:
使⽤完全限定资源定位符(URL),例如:
使⽤映射器接⼝实现类的完全限定类名,例如:
将包内的映射器接⼝实现全部注册为映射器,例如:
(4)properties:加载外部的properties文件,例如将数据源的配置信息单独抽取到一个properties文件中:
(5)typeAliases:可以将java类型设置一个别名
上⾯是⾃定义的别名,mybatis框架已经为我们设置好的⼀些常⽤的类型的别名:



