深入浅出 最新版 MyBatis-3.5.6_ 4. MyBatis XML 映射器

这个 MyBatis 的映射器可以说是我们之后学习 MyBatis 的核心

XML 映射器中主要有我们操作数据库的几个核心顶级元素,官网链接:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#select

insert

update

select

delete

不难发现,这些个标签其实就是对应的我们数据库 CRUD 操作的核心关键字,我们一个一个来学习,学习之前先说一下里面的一个标签:mapper 标签

一、mapper 标签

这个标签呢,里面有一个重要的属性,就是 namespace,这个 namespace 后面跟的是具体的某一个 接口地址

在 MyBatis 之前的版本,这个 namespace 是不重要的,可以写可以不写,但是随着版本的更新,最后变成了强制要写的

为啥要做成强制性的呢,原因如下:

1. 接口绑定。这个是为了让你的代码更加规范。

2. 命名解析。因为 MyBatis 本身也支持缓存啥的,配置好了 namespace 可以方便进行二级缓存,一级缓存是 SqlSession。

(这里一级缓存和二级缓存我们放到后面去说,先了解一下~~~)

这也就是说,我们以后一定要配置这个 namespace,而且保证一个 Java 接口对应一个 xml 文件。

知道了这个之后,我们来开始说映射文件中的几个核心顶级标签

二. insert 标签

这个其实我们在写 HelloWorld 的时候就写的这个,可以来看一下

就这个,insert 标签中有 id 属性,这个就是方法名,对应的是接口的方法名;

parameterType 是传入参数,当然,Type 可以有很多种类型,我们这里传入的是一个 Student 对象,我们也可以传入 String 对象、Map 对象、或者是 Integer 对象,这里需要注意的是,一定要传递的是引用类型,不能传递基本数据类型。

除去 parameterType,我们还有 parameterMap,当然,这个 parameterMap 我们一般不适用,所以不多做解释,啥时候碰到了,我们啥时候说

然后 insert 标签中还包含着一个 SQL,里面对应的一个 insert 操作SQL,这里注意,不要写错,别在 insert 标签里面写上一个 select 查询 SQL,或者是其他的操作类型的 SQL!!!

三. update 标签

我们来根据主键 id 来修改一条数据,直接上图

因为我们要修改的是学生里面的很多属性,所以这里不能只单单传递一个主键 id,而是一个整体 Student。

然后我们来写一下对应的 Java 接口

接着我们写一下测试方法

我们来运行一下,看看能不能修改

是 OK 的~

四、delete 标签

这个我们是根据主键 id 删除 id 为 4 的数据,废话不多说,直接上代码

我们来执行一下,看看效果

OK 的

五、select 标签

这里因为某些原因,我们就先感受一下这个标签,因为查询本身就是复杂的,尤其是按照某些条件,我们需要在后面学习了动态标签之后,再来详细讲述 select 标签

我们这里就写两种查询方式,一个是查询所有的学生,另外的的一个是根据主键 id 查询某一个学生

先来看根据 id 查询某一个学生,直接上图!

当然啊,写成这样是不行的,我们还需要有返回值,这里我们需要使用 resultType 这个标签,标签的值就是 Student,这里我们用的是别名~

然后我们写接口

最后写一个测试类,我们来测试一下

这里注意一下,我们不需要提交事务,所以可以删除掉那段代码。

OK 了。

然后我们查询一下所有学生

这里,我们一样,需要写 result,但是,我们不能使用 resultType 了,因为我们这样没有条件去查询,查出来肯定不止一个学生,也就是一个集合,所以这里我们使用 resultMap。

但我们 resultMap 等于的值是什么呢?我们根据官网提供的资料

看这个结果映射,然后稍微往下翻一翻

我们也定义一个 resultMap 标签

property 对应的是我们 Java 实体类的属性字段,column 对应的是数据库中的字段。

然后我们让 resultMap 的值等于 StudentResult。

然后我们写接口以及测试

来看看测试结果

是 OK 的,没有问题。

到这里为止,我们的 MyBatis XML 映射器 就完成了,东西有点多,大家好好消化一下。

大家可以自己好好查查看,有不懂的可以联系我 QQ:2100363119

欢迎大家访问我的网站:https://www.lemon1234.com

可以的话关注一下我的公众号,就在我网站,每天都有更新~~~,无限资源畅游 Java,感谢~

猜你喜欢

转载自blog.csdn.net/weixin_45908370/article/details/113926099
今日推荐