mybatis的集合 *** 作
知识点:如果遇到集合参数传递,需要将集合遍历
标签:foreach循环遍历集合
标签属性说明:1.collection表示遍历的集合类型:1.1数组 关键字array 1.2list集合 关键字list
1.3 Map集合 关键字Map中的key
2.open 循环开始标签 close 循环结束标签 包裹循环体
3.separator 分隔符
4.item 当前循环遍历的数据的变量
动态sql
2.1动态sql-where-if
核心思想:自动判断是否为null,如为null,则字段不参与sql,例如xml中sql语句中有where id = # {id},如此时前端传过来的值为null,如果不加判断,怎会出现id=null,id怎么可以出现等于null的情况呢,所以需要进行判断
动态sql规则:
1.
其中true表示:会拼接 字段条件 false表示:不会拼接字段条件
2.多余的关键字 由于动态sql拼接必然会导致多余的and 或者 or
3.where标签说明 可以去除 where后边多余的and 或者 or
2.2.动态sql-set-if
set标签用法:去除set条件中多余的,号,如要实现用户数据修改,但是要根据前端传的值不为null时可以set
update demo_user
name=#{name},
age = #{age},
sex = #{sex}
where id = #{id}
2.3动态sql-分支结构语法
在查询等 *** 作下,如果一个属性的值不满足,则使用另一个属性,这时候在sql语句中就需要使用if-else或者if-else if -else
实例:如果name有值,按照name查询,否则按照年龄查询,如果name,age都没有,按照sex查询
select from demo_user
id = #{id}
name = #{name}
age = #{age}
sex=#{sex}
resultType和resultMap的区别
resultType:要求:对象的属性名称和表中的字段一一对应
例如:对象User(id,name,age,sex) 表:demo_user(dog_id,dog_name,dog_age,dog_sex)
总结:resultType适合单标映射,并且属性名称一致
resulltMap:如果发现表中的字段和属性名称不一致时,使用resultMap映射
注意:resultMap中如果映射包括表中的主键字段,那么在resultMap标签中要使用
对象:Dog(dogId,dogName) 表:dog(dog_id,dog_name) 属性不匹配,所以映射失败
注解开发
注解使用规则:1.注解标识接口方法,接口方法调用,直接注解的内容
2.注解将查询的结果集,根据方法的返回值类型动态映射
使用注解开发时mybatis需要管理mapper的接口
开发注意事项:1.注解开发,只适用于单标CURD *** 作,多表 *** 作一定会出现问题
2.如果涉及到复杂标签时 ,where/set/foreach等标签时,不可以使用注解
3.所以应该熟练掌握xml映射文件的写法,注解开发只是辅助的作用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)