MyBatis动态SQL标签用法实例详解
1、动态SQL片段
通过SQL片段达到代码复用
selectcount(*) select* fromicp namelike'%$name$%' pathlike'%path$%' area_id=#area_id# hided=#hided# limit#_start#,#_size#
2、数字范围查询
所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段
=#_img_size_ge# ]]>
多次使用一个参数也是允许的
=#_now# ]]>
3、时间范围查询
=#_starttime# andcreatetime<#_endtime# ]]>
4、in查询
statein('$_in_state$')
5、like查询
(chnameonelike'%$chnameone$%'orspellinitiallike'%$chnameone$%') chnametwolike'%$chnametwo$%'
6、or条件
7、where子查询
codenotin (selectt.contentcode fromcms_ccm_programcontentt wheret.contenttype='MZNRLX_MA' andt.programcode=#exprogramcode#) select* fromcms_ccm_material wherecodein (selectt.contentcode fromcms_ccm_programcontentt wheret.contenttype='MZNRLX_MA' andprogramcode=#value#) orderbyupdatetimedesc
9、函数的使用
insertintorulemaster( name, createtime, updatetime, remark )values( #name#, now(), now(), #remark# ) selectLAST_INSERT_ID() updaterulemasterset name=#name#, updatetime=now(), remark=#remark# whereid=#id#
10、map结果集
selectcount(a.*) selecta.idvid, a.imgimgurl, a.img_simgfile, b.vfilenamevfilename, b.namename, c.idsid, c.urlurl, c.filenamefilename, c.statusstatus Fromsecfilesc,jujib,videoinfoa where a.id=b.videoid andb.id=c.segmentid andc.status=0 orderbya.idasc,b.idasc,c.sortnumasc limit#_start#,#_size#
11、trim
trim是更灵活的去处多余关键字的标签,他可以实践where和set的效果。
where例子的等效trim语句:
Xml代码
SELECT*fromSTUDENT_TBLST ST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{studentName}),'%') ANDST.STUDENT_SEX=#{studentSex}
set例子的等效trim语句:
Xml代码
UPDATESTUDENT_TBL STUDENT_TBL.STUDENT_NAME=#{studentName}, STUDENT_TBL.STUDENT_SEX=#{studentSex}, STUDENT_TBL.STUDENT_BIRTHDAY=#{studentBirthday}, STUDENT_TBL.CLASS_ID=#{classEntity.classID} WHERESTUDENT_TBL.STUDENT_ID=#{studentID};
12、choose(when,otherwise)
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。MyBatis提供了choose元素,按顺序判断when中的条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行otherwise中的sql。类似于Java的switch语句,choose为switch,when为case,otherwise则为default。
if是与(and)的关系,而choose是或(or)的关系。
例如下面例子,同样把所有可以限制的条件都写上,方面使用。选择条件顺序,when标签的从上到下的书写顺序:
Xml代码
SELECT*fromSTUDENT_TBLST ST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{studentName}),'%') ANDST.STUDENT_SEX=#{studentSex} ANDST.STUDENT_BIRTHDAY=#{studentBirthday} ANDST.CLASS_ID=#{classEntity.classID}
以上所述是小编给大家介绍的MyBatis动态SQL标签用法实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!