【Java Web】-> MyBatis ->映射文件详解

Ⅰ 前言

MyBatis 第一课 中,我详细讲解了写一个 MyBatis 程序的全过程和它的全局配置文件。

在 MyBatis 中还有一个重要的配置文件就是 SQL 映射文件。

我们可以看一下官方文档对这个文件的描述。
在这里插入图片描述
文档中说,SQL 映射文件是 MyBatis 真正的力量所在……这里发生了神奇的事情。

这篇文章我们就来研究一下 SQL 映射文件。

Ⅱ 增、删、改操作

先回顾一下 MyBatis 第一课 中我的 case 。

我定义了一个实体类 Employee,和我的数据库中的一个表相对应;定义了一个接口 EmployeeMapper ,这个接口中定义了一个根据 id 获得 Employee 对象的方法。

在这里插入图片描述
现在我们再加上增删改的方法。
在这里插入图片描述
现在我们在 SQL 映射文件中增加新添加的 增、删、改的 SQL 语句。

在这里插入图片描述

注意这里的每个模块的 parameterType 属性都可以不写。

我们写一个测试方法,使用方法在 MyBatis 第一课 中已经详细讲述,这里不再赘述。

我们先来测试一下添加数据。
在这里插入图片描述
这里获取 SqlSession 对象我使用的是 openSession() 的无参方法,实际上还有另外一个方法。
在这里插入图片描述
此布尔值表示的是是否自动提交事务,无参的方法默认的是 false,所以我们需要在执行完写操作之后通过 commit() 手动提交一下。

数据库原始数据只有一条:
在这里插入图片描述
测试成功:
在这里插入图片描述
再来看修改。
在这里插入图片描述
测试成功
在这里插入图片描述
最后再来测试一下删除:
在这里插入图片描述
仍是成功的。
在这里插入图片描述
这里我们定义的增删改都没有返回值,MyBatis 一共支持三种类型的返回值:intlongboolean,这三种类型的基本类型或者它们的包装类都可以。

intlong 的返回值都会返回此次操作影响的行数,boolean 是在影响行数大于 0 行的时候就返回为 true

我们用增加方法来测试一下,我直接将它的返回值设置为 boolean,除此之外不需要做任何配置了,直接在接口中修改返回值即可。
在这里插入图片描述
测试结果如下
在这里插入图片描述
如果你使用的是自增主键,比如 id 值,不用自己写,数据库默认加一条记录 id 就增加 1,那我们要怎么获取数据库自增主键的值呢?

这里我们可以在 insert 标签下增加两个属性。

在这里插入图片描述
useGeneratedKeys 表示使用自增主键获取主键值策略,keyProperty 指定对应的主属性,也就是 MyBatis 在获取到主键值之后,将这个值封装给 javabean 的哪个属性。

Ⅲ 参数处理

在 MyBatis 中,我们配置 SQL 映射文件时是没有操心参数的类型问题的。
在这里插入图片描述
不管接口中传什么参数,在 SQL 映射文件中都可以根据 #{} 取出对应的值,现在我们来看一下 MyBatis 是如何进行参数处理的。

对于单个参数而言,MyBatis 不会做特殊的处理,直接可以取出参数值。比如我们要取得 id,可以在大括号里写个 id。
在这里插入图片描述

实际上,大括号里写什么都可以,因为这个大括号里只有一个参数值要取出来,所以无所谓。

比如我们写一个 yzh。
在这里插入图片描述
同样可以取出来。
在这里插入图片描述
那我们再试一下多个参数的,比如我再定义一个根据 id 和 firstName 共同查询的方法。
在这里插入图片描述
然后我们写 SQL 映射文件中的内容。
在这里插入图片描述
由于获取 SqlSessionFactory 的代码是一样的,所以我直接将它提取出来写了一个方法。
在这里插入图片描述
然后我们来看一下测试代码:
在这里插入图片描述
运行后发现报错了
在这里插入图片描述
报错说没有找到 id,可用的参数是 [arg1, arg0, param1, param2]

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2]
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值