Mybatis复习第二天

"本文介绍了Mybatis中增删改查的基本操作,特别是查询操作。通过UserMapper接口和XML配置展示了根据ID查询、查询所有用户的方法。强调了当查询多条数据时需使用List集合接收,而单条数据则用对象接收。还探讨了使用${}
摘要由CSDN通过智能技术生成

 前言:第二天吸收的技术点比较多,整张篇幅较大,希望看到这儿的客观,如果有兴趣可以接着看完。

在第一天中,我简单的写了一个简单表结构的单挑插入操作,来演示Mybatis如何跟Mysql进行相关联,并且插入相关数据。值得一提的是 增删改的操作都是可以举一反三的,我就不一一赘述了。特别需要注意的是查询操作!下面我来给大家演示一下

 UserMapper接口中写好根据ID查询以及查询用户所有方法。

 在UserMapper中来写好对应的SQL语句

下面我们来进行相关测试

查询结果如下

 但如果此时 我将SQL语句修改成查询所有并且表中的数据有多条,此时会发生怎样的结果呢?

 

 此时我们可以看到,查询出来的结果集有3条,但是报了一个TooManyResultsException的错误异常,意思就是无法把多条查询结果集数据封装到一个对象中。

由此可得出一个结论,当我们需要查询一条指定结果的时候可以使用User对象来进行接收,但我们如果需要查询所有数据的情况下,需要用List<>集合来做一个结果集的接收

 

 

 正常查询到我们想要的3条数据。

正常的增删改查我们复习完成,现在我们复习第二种传参的方式进行一个查询

 根据name查询用户信息

 正常输入值 注意这里我使用的是${}的方式进行传值,学过JDBC的朋友都知道,#{}跟${}一个是占位符替换,预编译处理防止SQL注入,一个是字符串替换,不能防止SQL注入。这个不过多描述

 

 通过传参的方式,完成我们想要查询的结果集。

第二种输入多个传参方式进行一个简单的验证查询

 

 

此时我们也能够通过传入多个参数来查询想要的结果,但需要注意一点。在写SQL语句的时候未使用@param注解的方式需要按照Mybatis 

 需要注意这一点,不过一般我们并不使用这种方法来写参入参数,而是使用@Param注解稍后会讲。

使用Map集合方式来进行存储

 

查询结果

 

 

此时我们查询的结果集是一个Map集合,如果后续实战中需要传入前端,就可以把带有属性值的Map集合传入过去。 

此外我们除了用实体类对象类型来接收结果集,还可以使用Map集合来接收查询结果集(因为Mybatis底层就是采用k,v的存储形式来接收我们的查询条件与结果,有兴趣的朋友可以搜寻相关源码)

核心关心@param注解 该注解的意思是,注解里的value值 是传入参数实体类属性的key,我们查询出来的实体类结果就是与之对应的value

 

在mapper.xml文件中 传入的参数必须与@Param注解中的 value 要一一对应

 

因为我们根据相对应的key,来映射相关的返回值

 

查询结果集如下 

相对于的俩种使用普通查询方式的SQL 已经讲完了 一种是基于不传参,直接在XML中写相当于的SQL语句,然后在Dao层或者测试方法中直接调用方法就能够得到查询结果。但这种方法在实际开发中不常用。

而我更多的去推荐大家使用第二种方式,利用@param注解的方式或者使用#{} ${}的方式来传参的方式进行增删改查,因为可读性更高,编码规范更整洁,也是开发中常见的方式。

前面讲了查询所有结果集的方式使用List<entiry>嵌套实体类得到查询结果集,我们还可以通过List集合嵌套Map集合得到查询所有结果集

这里我们使用模糊查询的方式然后使用List 嵌套Map集合得到所有查询结果集

 

 

 我表中Z开头的User只有一条数据所以,只查询出一条,但是我们可以看到模糊查询的sql语句拼写成功。

第二天的复习就到此为止啦,基本上是把Mybatis的 增删改查询方式以个人的理解方式描述了一遍,就当在CSDN上做一个系统的笔记输出。 后面在更新相当于的 自定义映射结果集resultMap,二级缓存,延迟加载,逆向工程等笔记。

希望看完的客观能点个三赞,谢谢各位,我将持续更新个人的CSDN博客笔记~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值