Mybatis 是一款持久层框架,半自动的orm(对象关系映射)框架 可以使用注解或xml来配置或映射原始类型
相比于Hibernate全自动的orm框架,Mybatis更加灵活,因为支持自定义的sql语句,所以在调试优化这一方面还是不错
首先我们来看一下mybatis如何安装 我们使用的是 Mybatis3.5.6
下载之后解压 我们可以看到一下的文件
lib 是mybatis的依赖包 (就如同你用mybatis一样)
mybatis-3.5.6.pdf 是 用户操作手册
mybatis-3.5.6.jar 便是 mybatis核心包
如何使用
使用mybatis 需要先把mybatis核心包放置于项目的类路径
还有我们离不开的Mysql驱动 Mysql8.0.22
Mysql驱动解压之后里面有个jar 也加入项目的类路径
直接ok就行 mysql驱动包也是同样操作(可以两个一起添加)
Mybatis核心配置
从官方文档的这句话得知
SqlSessionFactoryBuilder 需要一个配置文件 或者 配置类来构建 SqlSessionFactory
可以看到SqlSessionFactoryBuilder有许多种方法来构建实例 但好像没有直接写上文件名的方法
所以我们可以使用Mybatis 提供的Resources类 加载配置文件
我们可以选择getResourceAsStream(返回InputStream) 或 getResourceAsReader(返回Reader)
知道了如何加载配置文件 现在我们需要来了解一下配置文件
配置文件
首先我们右击创建一个配置文件
配置文件名称不做限制 需要规范
XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)
事务我们可以放在后面在做讲解 但是首先我们需要配置一个数据源 才可以使用
<!--表示使用xml 1.0版本 数据格式 UTF-8-->
<?xml version="1.0" encoding="UTF-8" ?>
<!--mybatis约束 -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration配置 mybatis的配置都写在里面-->
<configuration>
<!--environments 环境配置集-->
<!--default="development" 默认选择的环境id 表示使用对应环境id的环境-->
<environments default="development">
<!--environment 环境集合 可以配置多个 以适应不同的数据库 或开发环境-->
<!--id="development" 环境id 用来区分环境或选择环境-->
<environment id="development">
<!--transactionManager 事务管理器 -->
<transactionManager type="JDBC"/>
<!--数据源配置-->
<dataSource type="POOLED">
<!--mysql驱动-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--数据库地址 注意mysql8.0后需要加上时区-->
<property name="url" value="jdbc:mysql://localhost:3306/数据库名称"/>
<!--用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
以上就是一个简单的数据源配置
因为将注解放在第一行 会报错 删掉就可以了
接下来随便创建一个测试类
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class mybatistest {
public static void main(String[] args) {
try {
//读取配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis_config.xml");
//得到实例
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果没有报错 说明我们已经成功得到了一个SqlSessionFactory实例
但是我们想要操作数据库还差了点
首先 我们需要从SqlSessionFactory实例中得到SqlSession实例
SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
SqlSession sqlSession = build.openSession()
mybatis映射
mybatis 真正强大之处 在于它的sql语句映射 但是要怎么进行映射呢
看完这段官方文档 我们可以知道 sql映射有两种方式 注解 和 xml
相比于注解 xml对于复杂的sql语句显得更加明了 所以现在大部分都是采用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">
<!--以上是XML 头部和文档类型声明部分-->
<!--mapper sql映射必须写在里面 namespace 是自定义的-->
<mapper namespace="StudentMapper">
<!--select 查询语句 id 自定义 resultType返回类型 -->
<select id="selectOne" resultType="Student">
<!--sql语句 #{} 类似jdbc设置参数-->
select * from student where id = #{id}
</select>
</mapper>
以上就是一个标准的xml映射 写好之后 我们还需要添加进mybatis配置文件
这样mybatis才能找到xml映射和对应的sql映射
<!--environments之后 configuration里面-->
<mappers>
<!--文件地址-->
<mapper resource="StudentMapper.xml" />
</mappers>
以下是执行结果