框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射
本节主要内容
1: mapper映射文件输入映射(输入类型)
2:总结&下节预告
本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十一篇 mapper映射文件之输入映射
声明:本文系凯哥原创。转载请注明出处
一: mapper映射文件输入映射(输入类型)
1.1:mapper.xml文件中那个是输入映射(输入类型)?
其中paramenterType就是输入类型。
输入类型有:
简单类型、POJO类型、map类型等。下面我们将一一进行讲解
1.2:简单类型
简单类型就是常见的。如int/stirng等可以参考入门程序中,根据用户id查询用户信息的映射(或者看上图)
1.3 POJO类型
1.3.1 简单的pojo类型(单一的。属性是简单的而非对象或是集合的)
简单pojo类型作为输入参数,可以参考入门程序中,保存用户的那一篇文章。或是如下图:
1.3.2:复杂类型的pojo类型(对象中属性是另外一个对象或者是集合)
1:需求
假设入门程序中的用户都是一个班级的(班级包括老师、学校、班级、年级等很多信息。):
数据库中数据:
想模糊查询用户是凯哥的都有哪些?
思考这个怎么处理?
可以创建一个综合查询的vo类
对应mapper文件:
测试类:
输出结果:
说明:
在这个查询语句中,入参是UserVo这个pojo对象。
所以${user}其实就是获取到UsereVo对象中的user这个属性。
而我们知道在UserVo这个对象中的user属性是一个User对象。同时还知道User对象中有个属性是username。
所以这里的${user.username}其实就是获取到UserVo对象中user属性中的username属性值。
也就是说:在使用复杂的POJO类型作为入参的时候,是可以通过连点的方式获取到对象属性中的属性值。
注意:${}中必须是该对象对应属性的属性名称。不能写错
1.4:map作为入参
mapper配置文件写法:
mapper接口类:
测试类:
运行结果:
说明:
如果使用map作为入参的时候,对应mapper文件获取值的时候,需要根据map的key进行获取。
如果key不存在会怎么样?
比如:在mapper文件中的查询sql语句添加 and sex=${sex} 而这个是入参的map中没有sex这个key
执行后,不会出错。执行sql的时候如果map中没有这个key,也就是更加key获取的时候为空。会将这个空值赋值给sql语句。如下:
注意:
如果map的key在其他配置文件中也存在相同的名字,有可能导致获取值的时候错误。
比如:还记得全局配置文件中,数据库配置db.propertiees文件中:
有个username这个key。
那么如果把测试测试map这个方法中,usernames这个key换成usernam会怎么样?同时修改mapper.xml文件中对应的key
执行:
我们发现,打印出的sql语句username是root而不是凯哥。这个root是db.properties中的啊
所以,在这里需要注意!
二:总结
通过本篇学习,需要掌握(重要!很重要!!必须掌握)
1:parameterType传递简单类型、简单pojo类型怎么处理
2:传递复杂(或者包装)POJO对象的时候怎么处理
3:传递map的时候怎么处理以及使用map的时候需要注意什么
下节预告:
本节学了parameterType可以传递的类型。那么下节课我们将学习returnType的类型