2108-04动态sql

2108-04动态sql,第1张

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映射文件的写法,注解开发只是辅助的作用

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/794141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存