mybatis动态sql原理,mybatis动态sql判断字段为空
永远的神干货盘点
/*
**csdn认证讲师
*51cto高级讲师
*腾讯课堂认证讲师
*网易云课堂认证讲师
*华为开发者学堂认证讲师
*爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/
动态sql:
如果选择id= getstudentbyname 结果映射=学生映射参数Type=学生
select * from student,其中1=1
if test=sname!=null
sname=#{sname}
/如果
if test=age!=0
并且年龄=#{age}
/如果
/选择
2、选择
select id=getStudentByParam
参数类型=学生结果类型=学生
SELECT * FROM student,其中1=1
!-类似于表达式一次进到一个案件(何时)
选择
当test=sname!=null
sname=#{sname}
/什么时候
当测试=年龄!=0
并且年龄=#{age}
/什么时候
否则
并且1=1
/否则
/选择
/选择
3、设置
更新id=updateStudent
parameterType=Student
更新学生
设置
if test=sname!=null sname=#{sname},/if
if test=age!=0 age=#{age},/if
if test=grade!=空和grade.gid!=0 gid=#{grade.gid},/if
/设置
其中sid=#{sid}
/更新
4、外语
为每一个主要用在构建在条件中,它可以在结构化查询语言语句中进行迭代一个集合为每一个元素的属性主要有项目、索引、集合、打开、分隔符、关闭。
项目表示集合中每一个元素进行迭代时的别名。
指数指定一个名字,用于表示在迭代过程中,每次迭代到的位置。
打开表示该语句以什么开始。
分离器表示在每次进行迭代之间以什么符号进行分割
关闭表示该语句以什么结束。
募捐属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有以下3种情况:
如果传入的是单参数且参数类型是一个目录的时候,收藏中的属性值为目录如果传入的是单参数且参数类型是一个排列数组的时候,收藏的属性值为排列如果传入的参数是多个的时候,前面就需要把它们封装成一个地图了,当然单参数也可以封装成地图,实际上如果你在传入参数的时候,在胸部里面也是会把它封装成一个地图的,地图的键就是参数名,所以这个时候募捐的属性值就是传入的目录或排列对象在自己封装的地图里面的键例1:单参数目录的类型
制图人层代码
select id= selectstudentbyid 结果类型= Student
选择*
来自学生
希德在哪里
foreach item= item index= index collection= list
打开=(分隔符=,关闭=)
#{item}
/foreach
/选择
大刀层代码:
公共列表studentbyid(列表整数列表)
{}
封装目录代码:
列表列表=新数组列表整数
列表。添加(1);
列表。添加(2);
列表。增加(3);
例2:单参数排列数组的类型
制图人层代码
select id= selectstudentbyid 结果类型= Student
选择*
来自学生
希德在哪里
foreach item= item index= index collection= array
打开=(分隔符=,关闭=)
#{item}
/foreach
/选择
大刀层代码:
公共列表studentbyid(int[]List)
例3:将参数封装成地图的类型
制图人层代码
select id= selectstudentbyid 结果类型= Student
选择*
来自学生
其中像“%”# { sname }“%”这样的名称,sid在
foreach item= item index= index collection= sid
打开=(分隔符=,关闭=)
#{item}
/foreach
/选择
募捐的值为身份证,是传入的参数地图的键
大刀层代码:
公共列表学生selectStudentBySid(映射字符串,对象参数){ }
测试代码:
list list=new ArrayList Integer();
列表。添加(1);列表。添加(2);列表。增加(3);
Map String,Object params=new HashMap String,Object();
Params.put(sids ,list);
Params.put(sname ,sname);
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。