ibatis的sqlmap.xml中id可以传入一个参数_Mybatis 系列 3:Mybatis 的第一个测试用例

48a969ce1a434ccf606bbdeba594562c.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

很显然,第一个参数是通过 mapper 映射文件的命名空间(namespace) + id 唯一来找到 SQL 语句。

第二个参数则是需要传入 SQL 的参数,这里查询用户 id 为 1 的用户信息,所以该参数的值就为 1。

前提是,如何构建SqlSession?

逆向推导:SqlSession <- SqlSessionFactory <- SqlSessionFactoryBuilder <- 通过流对象 InputStream 创建 <- 读取mybatis-config.xml 文件获取流对象。

f0aa95df4de7a2e78c8e65e007fb156d.png

有两点需要说明一下:

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

看到控制输出结果,并且没有报错,则说明 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

tips:查看官方文档是学习一门新语言最有效的方法。

系列预告:Mybatis 系列 4:引入日志框架。

欢迎关注公众号「阿泽学长」

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值