本章介绍一下mybatis学习入门之后一些细节操作
一:parameterType输入参数和resultType输出参数的使用
1 搭建mybatis环境,在上一章已经提到了 2 在接口创建一个方法,参数是一个integer 3 编写映射文件,输入参数 int/integer都可以
4 输出参数,为返回值的类型
注意事项:parameterType可以不写,resultType一定要写(void的话可以不写)
二:sql语句占位符
占位符不能直接用问号,而是用#{xxx},这个xxx就要看接口方法参数而定.
1 如果参数是只有一个的情况下:
如果参数是简单类型:那么xxx的值可以是任意
如果参数是对象类型,那么xxx需要写对象的属性名保持一致
2 如果参数大于一个的情况下:
在第三章再谈
三:插入操作获取主键值
应用场景:当你插入的时候,可能会插入两个表的时候,这时候次表的的外键可能是主表的主键,那么这时候插入主表的数据的时候,可以获取到主表的主键,然后再作为参数插入到次表的外键
通过<selectKey>标签获取到主键,结果会返回到参数对象中
注意事项:<selectKey>的order属性,如果是选择after的话就是说明插入之后获取主键值
四:多条件查询
我们在开发中,可能会遇到一些多条件查询的条件,那么多个多条件的话,应该怎么做呢?这里可以通过自定义一个对象,专门就是封装条件属性,这样就能解决了.
注意事项1,如果这个条件对象的属性也是一个对象xxx,占位符为xxx.xxxx 其中xxxx是xxx对象的属性名
注意事项2,对于大于小于,处于xml的语法问题,需要给<![CDATA[内容]]>包括起来.不然就会出现问题
五:模糊查询
对于模糊查询,相信小伙伴都知道需要给占位符加上%%,方法一:在sql编写的时候直接写上xxxxxx like '%${value}%'
上面的这种使用方法不安全,容易sql注入
所以我们用的是方法二:在参数上面加上%%,不过这样的话,就很不方便,最佳的做法就是 xxxxx like concat ('%',xxx,'%')
这样的话我们只需要关注参数就行了
六:当列名和对象的属性名不一致的时候
我们开发中,经常就会自定义列名查询.这时候就会javabean中的属性名出现不一致的情况了,那么这时候应该怎么办呢?
没错,这时候就用resultMap去映射列名,原理就是和返回来的结果集的列名和javabean映射一下而已