MyBatis速食
一:创建数据库
CREATE DATABASE `mybatis`;
USE `mybatis`;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`(
`id` int(20) NOT NULL,
`name` varchar(30) NOT NULL,
`pwd` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARACTER SET utf8;
INSERT INTO `user`(`id`,`name`,`pwd`)VALUES(1,'张三','123'),(2,'李四','1234'),(3,'王五','12345');
二:导入MyBatis相关 jar 包
使用 Maven 来构建项目,将依赖代码置于 pom.xml 文件中。
<!--导入依赖-->
<dependencies>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
</dependencies>
三:mybatis配置文件
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。创建mybatis-config.xml文件,在里面添加配置文件内容。XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器。
<?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/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--注册mapper(mapper.xml所在地址)-->
<mappers>
<mapper resource="mybatis/node0/dao/UserMapper.xml"/>
</mappers>
</configuration>
通过在pom.xml中添加下面的build文件,防止maven中配置文件无法生效和导出。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
四:编写mybatis工具类
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
//构建 SqlSessionFactory实例
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
五:创建实体类
public class User {
private int id;
private String name;
private String pwd;
//省略get,set方法(或者使用Lombok注解)
}
六:创建mapper接口
//定义一个Mapper接口
public interface UserMapper {
List<User> selectUser();
}
七:Mapper.xml配置文件
MyBatis 提供的所有特性都可以利用基于 XML 的映射语言来实现,一个基于 XML 映射语句的示例,它应该可以满足 SqlSession 的调用。
<?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接口,不能填错-->
<mapper namespace="mybatis.node0.dao.UserMapper">
<select id="selectUser" resultType="mybatis.node0.pojo.User">
select * from user
</select>
</mapper>
文档在命名空间 “mybatis.node0.dao.UserMapper” 中定义了一个名为 “selectUser” 的映射语句。它可以直接映射到在命名空间中同名的映射器类,并将已映射的 select 语句匹配到对应名称、参数和返回类型的方法。即可以在对应的映射器接口调用方法。
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<User> users=userMapper.selectUser();
八:Junit 包测试
@Test
public void selectUser(){
//每个线程都应该有它自己的 SqlSession 实例。
SqlSession sqlSession= MybatisUtils.getSession();
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<User> users=userMapper.selectUser();
//for each打印数据
for (User user: users){
System.out.println(user);
}
//关闭
sqlSession.close();
}