![48a969ce1a434ccf606bbdeba594562c.png](https://i-blog.csdnimg.cn/blog_migrate/699ab2d1a093be0b7f8bee109f671c58.png)
在项目 src 目录下新建 test 包,并创建 AppTest 类。
pom 文件引入 junit 测试依赖:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
创建测试类AppTest。
编写查询用户 id 为 1 的用户信息。
前提:操作mybatis,需要一个连接对象SqlSession(会话)
SqlSession 里有多个方法:select、insert、update、delete、selectList、selectOne 等等。
这里我们选择 selectOne,作用是查询单个对象,而且是需要选择传入两个参数的方法。
![910ea8a5daa02d44deec2148cc6f6c96.png](https://i-blog.csdnimg.cn/blog_migrate/290137ef2eaf0451963a6b26ab01b433.jpeg)
很显然,第一个参数是通过 mapper 映射文件的命名空间(namespace) + id 唯一来找到 SQL 语句。
第二个参数则是需要传入 SQL 的参数,这里查询用户 id 为 1 的用户信息,所以该参数的值就为 1。
前提是,如何构建SqlSession?
逆向推导:SqlSession <- SqlSessionFactory <- SqlSessionFactoryBuilder <- 通过流对象 InputStream 创建 <- 读取mybatis-config.xml 文件获取流对象。
![f0aa95df4de7a2e78c8e65e007fb156d.png](https://i-blog.csdnimg.cn/blog_migrate/a1353503cb9dd20cd7c5baf0df889c99.jpeg)
有两点需要说明一下:
0)、IDEA 的 Maven 不会编译 src 的 java 目录下的 xml 文件,所以在 Mybatis 的配置文件中找不到 xml 文件!
解决方案:
①不将 xml 放到 src 目录下面,将 XxxMapper.xml 放到 Maven 构建的resource 目录下面!
②在 Maven 的 pom 文件中,添加下面代码:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
这里使用方案 2。
1)、连接数据源DataSource时:
①、如果 MySQL 的驱动包为 8 以上的,主配置文件中 driver 的 value 值应为 com.mysql.cj.jdbc.Driver,而非 com.mysql.jdbc.Driver, 日志显示说该类已弃用(This is deprecated),可到 jar 包查询该类,无参构造器会抛出 SQLException 异常,并打印相关信息。
②、系统时区的错误,可通过 show VARIABLES like "%time_zone%" 查看,默认为 SYSTEM。
解决方案:
0、url 的 value 值后面加上参数 serverTimezone=GMT。
1、设置 MySQL 的时区:MySQL 默认的时区是 UTC 时区 :
0)永久的修改:修改 MySQL 的配置文件,添加:default-time-zone='+08:00',重启mysql生效 。
1)临时的修改:执行 MySQL 命令 set global time_zone='+08:00',立即生效,重启 MySQL 后失效。
这里使用方案 0,在 url 后面加上参数 serverTimezone=GMT:
jdbc:mysql://localhost:3306/mybatis-demo?serverTimezone=GMT
运行测试用例,并打印结果:
![453f1c152f1b94f7874384b38f18a36d.png](https://i-blog.csdnimg.cn/blog_migrate/8040b42ea0ae7d09867a6febbdd98b14.jpeg)
看到控制输出结果,并且没有报错,则说明 Mybatis 的框架已经初步搭建好并可以使用了。
下面,我们接着写查询所有用户信息的测试类:
0、先在 UserMapper.xml 中编写对应的 SQL 语句:
<select id="ListAll" resultType="com.mxz.mybatis.domain.User">
select id, name, salary from t_user
</select>
1、编写查询所有用户信息的测试用例并打印结果:
![d40198c010272908e3f6a7a0b3c9f542.png](https://i-blog.csdnimg.cn/blog_migrate/280b751fdafadf7d17c1022222a79abe.jpeg)
tips:查看官方文档是学习一门新语言最有效的方法。
系列预告:Mybatis 系列 4:引入日志框架。
欢迎关注公众号「阿泽学长」