1. 导入maven依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
2. 配置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://softwind.site:3300/smbms"/>
<property name="username" value="root"/>
<property name="password" value="yang"/>
</dataSource>
</environment>
</environments>
</configuration>
3. 读取配置文件
读取配置文件,配置连接数据库信息
package com.yang.util;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class MyBatisUtil {
static SqlSessionFactory sessionFactory;
static {
// 读入配置文件流
String resource = "mybatis-conf.xml";
InputStream resourceAsStream = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);
// 创建会话工厂
sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
}
public static SqlSession getSQLSession(){
// 创建会话并返回,sqlSession相当于statement(数据库操作对象)
return sessionFactory.openSession();
}
}
4. 创建dao接口
dao层中的接口即操作数据库对应的方法
package com.yang.dao;
public interface UserMapper {
// 获取用户列表
void getUserList();
}
5. 创建对应接口的mapper
一个mapper相当于UserDaoImpl,namespace对应着UserDaoImpl名字;
<?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">
<mapper namespace="com.yang.dao.UserMapper">
<select id="getUserList" resultType="com.yang.pojo.User">
select * from smbms_user;
</select>
</mapper>
总之,一个UserMapper.xml文件就相当于UserDaoImpl实现类,只是抽离了jdbc连接数据库、执行sql语句处理结果接的操作,通过sqlSession来统一执行
6. 编写测试文件
注意:Test包下,测试类的名称不能与被测试类的名称相同,否则很容易在程序中导错包导致错误,可以加上Test后缀;
public class UserMapperTest {
@Test
public void getUserList(){
SqlSession session = MyBatisUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
session.close();
}
}
- 在配置文件中已经注册了编写的Mapper,相当于是注册了UserDaoIml,若需要使用,以前是在service层中通过new的方式生成;
- MyBatis:先通过会话工厂生成会话session,这相当于与数据库进行连接并创建了数据库操作对象statement,但我们需要告诉MyBatis执行哪个Dao的查询,比如要执行UserDao的查询,则通过
session.getMapper(UserMapper.class);
得到其查询操作的mapper,通过mapper对应的方法mapper.getUserList();
即可进行查询;简单的说session.getMapper(UserMapper.class);
就相当于new UserDaoIml()
;