和我们学习的Java其他额外内容一样,要想使用MyBatis,首先需要导入它的jar包。因为目前大部分公司都在使用maven来实现jar包的导入和管理,因此学习时也同样推荐使用maven。以此实现学习和就业的无缝过渡。
Jar包/maven依赖
– MyBatis的maven仓库链接
https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.7
(版本号任意下载,可以使用最新版的玩玩,当然最推荐的还是使用人最多的稳妥啦。)
– GitHub链接
https://github.com/mybatis/mybatis-3/releases/tag/mybatis-3.5.7
(该方式下载jar包,需手动导入)
MyBatis核心配置文件
MyBatis的特点就是使用XML配置文件来使用对接口的绑定和功能的实现,因此就需要在mapper之上写一个配置文件,以实现MyBatis的基础设定。
XML配置文件如下(MyBatis官网同样有示例文档可供参考)
<?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核心配置文件-->
<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=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
<!--此处为自己的数据库用户名与密码-->
<property name="username" value="****"/>
<property name="password" value="****"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--
此处为自己的Mapper配置文件路径
每个Mapper配置文件写完后,都需要在此处声明
-->
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
编写MyBatis工具类
要想使用MyBatis中的代码,便需要获取其SqlSession对象。通过该对象来实现对方法的调用,SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.*;
import java.io.InputStream;
//sqlSessionFactory -> sqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用MyBatis第一步:获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
后续测试
当完成以上两步后,其实一个完整的MyBatis项目框架已经搭建完毕了,但如何知道它是健康的呢?那就需要编写供映射的实体类和测试代码来实现。
实体类的搭建相信学习到这里的大家已经很熟悉了,便不再赘述,仅附上供测试的代码,并进行简单的说明。
首先,需要在核心配置文件中注册mapper文件
<!--namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.wu.dao.xxxMapper">
</mapper>
此处,使用大部分公司选用的Junit单元测试的方式来进行测试工作,当然首先要导入其jar包或maven依赖,自行百度不再赘述。
@Test
public void test() {
//第一步:获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一:getMapper
//使用反射机制动态创建一个实例,通过该实例调用其接口实现类(UserMapper.xml)的方法
UserDao userDao = sqlSession.getMapper(UserDao.class);
//利用该实例使用接口方法
List<User> userList = userDao.getUserList();
//方式二:不推荐使用
// List<User> userList = sqlSession.selectList("com.wu.dao.UserDao.getUserList");
for (User user : userList) {
System.out.println(user);
}
//关闭SqlSession
sqlSession.close();
}
for (User user : userList) {
System.out.println(user);
}
//关闭SqlSession
sqlSession.close();
}
MyBatis实现Mapper接口的实例化有两种方式,不同于之间的接口实例化。推荐使用 getMapper() 的方式来创建Mapper实例。因为第二种方式直接写死了方法名,无法提高代码复用性和体现MyBatis的灵活性。
写在最后
测试MyBatis时难免会遇到各种各样的问题,常见的有:
- 配置文件没有注册
- 绑定接口错误
- 方法名错误
- 返回类型错误
- Maven导出资源错误
切记读错误提示要从下往上读,善用百度和CSDN。