前言:第二天吸收的技术点比较多,整张篇幅较大,希望看到这儿的客观,如果有兴趣可以接着看完。
在第一天中,我简单的写了一个简单表结构的单挑插入操作,来演示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博客笔记~