博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iBatis动态标签的用法
阅读量:5019 次
发布时间:2019-06-12

本文共 4463 字,大约阅读时间需要 14 分钟。

1、动态SQL片段
通过SQL片段达到代码复用
        <!--
动态条件分页查询 -->
        
<
sql
id
="sql_count"
>
                select count(*)
        
</
sql
>
        
<
sql
id
="sql_select"
>
                select *
        
</
sql
>
        
<
sql
id
="sql_where"
>
                from icp
                
<
dynamic
prepend
="where"
>
                        
<
isNotEmpty
prepend
="and"
property
="name"
>
                                name like '%$name$%'
                        
</
isNotEmpty
>
                        
<
isNotEmpty
prepend
="and"
property
="path"
>
                                path like '%path$%'
                        
</
isNotEmpty
>
                        
<
isNotEmpty
prepend
="and"
property
="area_id"
>
                                area_id = #area_id#
                        
</
isNotEmpty
>
                        
<
isNotEmpty
prepend
="and"
property
="hided"
>
                                hided = #hided#
                        
</
isNotEmpty
>
                
</
dynamic
>
                
<
dynamic prepend=""
>
                        
<
isNotNull
property
="_start"
>
                                
<
isNotNull
property
="_size"
>
                                        limit #_start#, #_size#
                                
</
isNotNull
>
                        
</
isNotNull
>
                
</
dynamic
>
        
</
sql
>
        
<
select
id
="findByParamsForCount"
parameterClass
="map"
resultClass
="int"
>
                
<
include
refid
="sql_count"
/>
                
<
include
refid
="sql_where"
/>
        
</
select
>
        
<
select
id
="findByParams"
parameterClass
="map"
resultMap
="icp.result_base"
>
                
<
include
refid
="sql_select"
/>
                
<
include
refid
="sql_where"
/>
        
</
select
>
 
2、数字范围查询
所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段
                        
<
isNotEmpty
prepend
="and"
property
="_img_size_ge"
>
                                <![CDATA[
                                img_size >= #_img_size_ge#
                        ]]>
                        
</
isNotEmpty
>
                        
<
isNotEmpty
prepend
="and"
property
="_img_size_lt"
>
                                <![CDATA[
                                img_size
< #_img_size_lt#
                        ]]
>
                        
</
isNotEmpty
>
 
多次使用一个参数也是允许的
                        
<
isNotEmpty
prepend
="and"
property
="_now"
>
                                <![CDATA[
                                            execplantime >= #_now#
                                     ]]>
                        
</
isNotEmpty
>
                        
<
isNotEmpty
prepend
="and"
property
="_now"
>
                                <![CDATA[
                                            closeplantime
<
= #_now#
                                     ]]
>
                        
</
isNotEmpty
>
 
3、时间范围查询
                        
<
isNotEmpty
prepend
="" property="_starttime"
>
                                
<
isNotEmpty
prepend
="and"
property
="_endtime"
>
                                        <![CDATA[
                                        createtime >= #_starttime#
                                        and createtime
< #_endtime#
                                 ]]
>
                                
</
isNotEmpty
>
                        
</
isNotEmpty
>
 
4、in查询
                        
<
isNotEmpty
prepend
="and"
property
="_in_state"
>
                                state in ('$_in_state$')
                        
</
isNotEmpty
>
 
5、like查询
                        
<
isNotEmpty
prepend
="and"
property
="chnameone"
>
                                (chnameone like '%$chnameone$%' or spellinitial like '%$chnameone$%')
                        
</
isNotEmpty
>
                        
<
isNotEmpty
prepend
="and"
property
="chnametwo"
>
                                chnametwo like '%$chnametwo$%'
                        
</
isNotEmpty
>
 
6、or条件
                        
<
isEqual
prepend
="and"
property
="_exeable"
compareValue
="N"
>
                                <![CDATA[
                                (t.finished='11'    or t.failure=3)
                        ]]>
                        
</
isEqual
>
 
                        
<
isEqual
prepend
="and"
property
="_exeable"
compareValue
="Y"
>
                                <![CDATA[
                                t.finished in ('10','19') and t.failure
<
3
                        ]]
>
                        
</
isEqual
>
 
7、where子查询
                        
<
isNotEmpty
prepend
="" property="exprogramcode"
>
                                
<
isNotEmpty
prepend
="" property="isRational"
>
                                        
<
isEqual
prepend
="and"
property
="isRational"
compareValue
="N"
>
                                                code not in
                                                (select t.contentcode
                                                from cms_ccm_programcontent t
                                                where t.contenttype='MZNRLX_MA'
                                                and t.programcode = #exprogramcode#)
                                        
</
isEqual
>
                                
</
isNotEmpty
>
                        
</
isNotEmpty
>
 
        
<
select
id
="findByProgramcode"
parameterClass
="string"
resultMap
="cms_ccm_material.result"
>
                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
        
</
select
>
 
9、函数的使用
        <!--
添加 -->
        
<
insert
id
="insert"
parameterClass
="RuleMaster"
>
                insert into rulemaster(
                name,
                createtime,
                updatetime,
                remark
                ) values (
                #name#,
                now(),
                now(),
                #remark#
                )
                
<
selectKey
keyProperty
="id"
resultClass
="long"
>
                        select LAST_INSERT_ID()
                
</
selectKey
>
        
</
insert
>
        <!--
更新 -->
        
<
update
id
="update"
parameterClass
="RuleMaster"
>
                update rulemaster set
                name = #name#,
                updatetime = now(),
                remark = #remark#
                where id = #id#
        
</
update
>
 
10、map结果集
        <!--
动态条件分页查询 -->
        
<
sql
id
="sql_count"
>
                select count(a.*)
        
</
sql
>
        
<
sql
id
="sql_select"
>
                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
        
</
sql
>
        
<
sql
id
="sql_where"
>
                From secfiles c, juji b, videoinfo 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
                
<
dynamic prepend=""
>
                        
<
isNotNull
property
="_start"
>
                                
<
isNotNull
property
="_size"
>
                                        limit #_start#, #_size#
                                
</
isNotNull
>
                        
</
isNotNull
>
                
</
dynamic
>
        
</
sql
>
        <!--
返回没有下载的记录总数 -->
        
<
select
id
="getUndownFilesForCount"
parameterClass
="map"
resultClass
="int"
>
                
<
include
refid
="sql_count"
/>
                
<
include
refid
="sql_where"
/>
        
</
select
>
        <!--
返回没有下载的记录 -->
        
<
select
id
="getUndownFiles"
parameterClass
="map"
resultClass
="java.util.HashMap"
>
                
<
include
refid
="sql_select"
/>
                
<
include
refid
="sql_where"
/>
        
</
select
>

转载于:https://www.cnblogs.com/javawebstudy/archive/2013/02/28/2936816.html

你可能感兴趣的文章
Nunit 学习
查看>>
两栏布局三种方法(亲测有效)
查看>>
前端表单序列化为json串,以及构造json数组、json串
查看>>
WinPEter制作U盘启动盘
查看>>
String类的实现
查看>>
网络配置备份。
查看>>
Syslog linux 日志
查看>>
The method sendKeys(CharSequence[]) in the type WebElement is not applicable 解决方法
查看>>
(转)spring学习之@ModelAttribute运用详解
查看>>
(转)Java回收对象的标记 和 对象的二次标记过程
查看>>
Eclipse Java工程转为Web工程步骤
查看>>
UIWebView 获取html标题
查看>>
python 函数可变长参数
查看>>
悬崖边上的舞者,记7.2生产数据库灾难事件
查看>>
sfc /scannow命令如何能用虚拟光驱完成修复?(xp下的办法)
查看>>
error C2248: 'QObject::QObject' : cannot access private member declared in class 'QObject'
查看>>
Netbeans调试教程
查看>>
关于DirectX的小分享
查看>>
java - day10 - uptest
查看>>
在iOS 8中使用UIAlertController
查看>>