zookeeper python接口实例详解
262
2023-04-28
MyBatis动态SQL标签用法实例详解
1、动态SQL片段
通过SQL片段达到代码复用
select count(*)
select *
from icp
name like '%$name$%'
path like '%path$%'
area_id = #area_id#
hided = #hided#
limit #_start#, #_size#
2、数字范围查询
所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段
<![CDATA[
img_size >= #_img_size_ge#
]]>
<![CDATA[
img_size < #_img_size_lt#
]]>
多次使用一个参数也是允许的
<![CDATA[
execplantime >= #_now#
]]>
<![CDATA[
closeplantime <= #_now#
]]>
3、时间范围查询
<![CDATA[
createtime >= #_starttime#
and createtime < #_endtime#
]]>
4、in查询
state in ('$_in_state$')
5、like查询
(chnameone like '%$chnameone$%' or spellinitial like '%$chnameone$%')
chnametwo like '%$chnametwo$%'
6、or条件
<![CDATA[
(t.finished='11' or t.failure=3)
]]>
<![CDATA[
t.finished in ('10','19') and t.failure<3
]]>
7、where子查询
code not in
(select t.contentcode
from cms_ccm_programcontent t
where t.contenttype='MZNRLX_MA'
and t.programcode = #exprogramcode#)
select *
from cms_ccm_material
where code in
(select t.contentcode
from cms_ccm_programcontent t
where t.contenttype = 'MZNRLX_MA'
and programcode = #value#)
order by updatetime desc
9、函数的使用
insert into rulemaster(
name,
createtime,
updatetime,
remark
) values (
#name#,
now(),
now(),
#remark#
)
select LAST_INSERT_ID()
update rulemaster set
name = #name#,
updatetime = now(),
remark = #remark#
where id = #id#
10、map结果集
select count(a.*)
select a.id vid,
a.img imgurl,
a.img_s imgfile,
b.vfilename vfilename,
b.name name,
c.id sid,
c.url url,
c.filename filename,
c.status status
From secfiles c, juji b, videoinfohttp:// a
where
a.id = b. videoid
and b.id = c.segmentid
and c.status = 0
order by a.id asc,b.id asc,c.sortnum asc
limit #_start#, #_size#
11、trim
trim是更灵活的去处多余关键字的标签,他可以实践where和set的效果。
where例子的等效trim语句:
Xml代码
SELECT * from STUDENT_TBL ST
ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
AND ST.STUDENT_SEX = #{studentSex}
set例子的等效trim语句:
Xml代码
UPDATE STUDENT_TBL
STUDENT_TBL.STUDENT_NAME = #{studentName},
STUDENT_TBL.STUDENT_SEX = #{studentSex},
STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},
STUDENT_TBL.CLASS_ID = #{classEntity.classID}
WHERE STUDENT_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 * from STUDENT_TBL ST
ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
AND ST.STUDENT_SEX = #{studentSex}
AND ST.STUDENT_BIRTHDAY = #{studentBirthday}
AND ST.CLASS_ID = #{classEntity.classID}
以上所述是给大家介绍的MyBatis动态SQL标签用法实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,会及时回复大家的!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~