iBatis动态SQL标签用法
来源:互联网 发布:centos 安装bugzilla 编辑:程序博客网 时间:2024/05/14 10:00
2011-06-27 17:18:01| 分类:iBatis | 标签: |字号大中小 订阅
1、动态SQL片段
通过SQL片段达到代码复用
<!-- 动态条件分页查询 -->
<sqlid="sql_count">
select count(*)
</sql>
<sqlid="sql_select">
select *
</sql>
<sqlid="sql_where">
from icp
<dynamicprepend="where">
<isNotEmptyprepend="and"property="name">
name like '%$name$%'
</isNotEmpty>
<isNotEmptyprepend="and"property="path">
path like '%path$%'
</isNotEmpty>
<isNotEmptyprepend="and"property="area_id">
area_id = #area_id#
</isNotEmpty>
<isNotEmptyprepend="and"property="hided">
hided = #hided#
</isNotEmpty>
</dynamic>
<dynamic prepend="">
<isNotNullproperty="_start">
<isNotNullproperty="_size">
limit #_start#, #_size#
</isNotNull>
</isNotNull>
</dynamic>
</sql>
<selectid="findByParamsForCount"parameterClass="map"resultClass="int">
<includerefid="sql_count"/>
<includerefid="sql_where"/>
</select>
<selectid="findByParams"parameterClass="map"resultMap="icp.result_base">
<includerefid="sql_select"/>
<includerefid="sql_where"/>
</select>
<sqlid="sql_count">
select count(*)
</sql>
<sqlid="sql_select">
select *
</sql>
<sqlid="sql_where">
from icp
<dynamicprepend="where">
<isNotEmptyprepend="and"property="name">
name like '%$name$%'
</isNotEmpty>
<isNotEmptyprepend="and"property="path">
path like '%path$%'
</isNotEmpty>
<isNotEmptyprepend="and"property="area_id">
area_id = #area_id#
</isNotEmpty>
<isNotEmptyprepend="and"property="hided">
hided = #hided#
</isNotEmpty>
</dynamic>
<dynamic prepend="">
<isNotNullproperty="_start">
<isNotNullproperty="_size">
limit #_start#, #_size#
</isNotNull>
</isNotNull>
</dynamic>
</sql>
<selectid="findByParamsForCount"parameterClass="map"resultClass="int">
<includerefid="sql_count"/>
<includerefid="sql_where"/>
</select>
<selectid="findByParams"parameterClass="map"resultMap="icp.result_base">
<includerefid="sql_select"/>
<includerefid="sql_where"/>
</select>
2、数字范围查询
所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段
<isNotEmptyprepend="and"property="_img_size_ge">
<![CDATA[
img_size >= #_img_size_ge#
]]>
</isNotEmpty>
<isNotEmptyprepend="and"property="_img_size_lt">
<![CDATA[
img_size < #_img_size_lt#
]]>
</isNotEmpty>
<![CDATA[
img_size >= #_img_size_ge#
]]>
</isNotEmpty>
<isNotEmptyprepend="and"property="_img_size_lt">
<![CDATA[
img_size < #_img_size_lt#
]]>
</isNotEmpty>
多次使用一个参数也是允许的
<isNotEmptyprepend="and"property="_now">
<![CDATA[
execplantime >= #_now#
]]>
</isNotEmpty>
<isNotEmptyprepend="and"property="_now">
<![CDATA[
closeplantime <= #_now#
]]>
</isNotEmpty>
<![CDATA[
execplantime >= #_now#
]]>
</isNotEmpty>
<isNotEmptyprepend="and"property="_now">
<![CDATA[
closeplantime <= #_now#
]]>
</isNotEmpty>
3、时间范围查询
<isNotEmptyprepend="" property="_starttime">
<isNotEmptyprepend="and"property="_endtime">
<![CDATA[
createtime >= #_starttime#
and createtime < #_endtime#
]]>
</isNotEmpty>
</isNotEmpty>
<isNotEmptyprepend="and"property="_endtime">
<![CDATA[
createtime >= #_starttime#
and createtime < #_endtime#
]]>
</isNotEmpty>
</isNotEmpty>
4、in查询
<isNotEmptyprepend="and"property="_in_state">
state in ('$_in_state$')
</isNotEmpty>
state in ('$_in_state$')
</isNotEmpty>
5、like查询
<isNotEmptyprepend="and"property="chnameone">
(chnameone like '%$chnameone$%' or spellinitial like '%$chnameone$%')
</isNotEmpty>
<isNotEmptyprepend="and"property="chnametwo">
chnametwo like '%$chnametwo$%'
</isNotEmpty>
(chnameone like '%$chnameone$%' or spellinitial like '%$chnameone$%')
</isNotEmpty>
<isNotEmptyprepend="and"property="chnametwo">
chnametwo like '%$chnametwo$%'
</isNotEmpty>
6、or条件
<isEqualprepend="and"property="_exeable"compareValue="N">
<![CDATA[
(t.finished='11' or t.failure=3)
]]>
</isEqual>
<![CDATA[
(t.finished='11' or t.failure=3)
]]>
</isEqual>
<isEqualprepend="and"property="_exeable"compareValue="Y">
<![CDATA[
t.finished in ('10','19') and t.failure<3
]]>
</isEqual>
<![CDATA[
t.finished in ('10','19') and t.failure<3
]]>
</isEqual>
7、where子查询
<isNotEmptyprepend="" property="exprogramcode">
<isNotEmptyprepend="" property="isRational">
<isEqualprepend="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>
<isNotEmptyprepend="" property="isRational">
<isEqualprepend="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>
<selectid="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>
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、函数的使用
<!-- 添加 -->
<insertid="insert"parameterClass="RuleMaster">
insert into rulemaster(
name,
createtime,
updatetime,
remark
) values (
#name#,
now(),
now(),
#remark#
)
<selectKeykeyProperty="id"resultClass="long">
select LAST_INSERT_ID()
</selectKey>
</insert>
<!-- 更新 -->
<updateid="update"parameterClass="RuleMaster">
update rulemaster set
name = #name#,
updatetime = now(),
remark = #remark#
where id = #id#
</update>
<insertid="insert"parameterClass="RuleMaster">
insert into rulemaster(
name,
createtime,
updatetime,
remark
) values (
#name#,
now(),
now(),
#remark#
)
<selectKeykeyProperty="id"resultClass="long">
select LAST_INSERT_ID()
</selectKey>
</insert>
<!-- 更新 -->
<updateid="update"parameterClass="RuleMaster">
update rulemaster set
name = #name#,
updatetime = now(),
remark = #remark#
where id = #id#
</update>
10、map结果集
<!-- 动态条件分页查询 -->
<sqlid="sql_count">
select count(a.*)
</sql>
<sqlid="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>
<sqlid="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="">
<isNotNullproperty="_start">
<isNotNullproperty="_size">
limit #_start#, #_size#
</isNotNull>
</isNotNull>
</dynamic>
</sql>
<!-- 返回没有下载的记录总数 -->
<selectid="getUndownFilesForCount"parameterClass="map"resultClass="int">
<includerefid="sql_count"/>
<includerefid="sql_where"/>
</select>
<!-- 返回没有下载的记录 -->
<selectid="getUndownFiles"parameterClass="map"resultClass="java.util.HashMap">
<includerefid="sql_select"/>
<includerefid="sql_where"/>
</select>
<sqlid="sql_count">
select count(a.*)
</sql>
<sqlid="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>
<sqlid="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="">
<isNotNullproperty="_start">
<isNotNullproperty="_size">
limit #_start#, #_size#
</isNotNull>
</isNotNull>
</dynamic>
</sql>
<!-- 返回没有下载的记录总数 -->
<selectid="getUndownFilesForCount"parameterClass="map"resultClass="int">
<includerefid="sql_count"/>
<includerefid="sql_where"/>
</select>
<!-- 返回没有下载的记录 -->
<selectid="getUndownFiles"parameterClass="map"resultClass="java.util.HashMap">
<includerefid="sql_select"/>
<includerefid="sql_where"/>
</select>
评论这张
转发至微博
转发至微博
iBatis批量处理+多表关联查询
Spring+iBatis+JOTM实现JTA事务
历史上的今天
- Oracle中的视图详解2012-06-27 11:17:43
- Oracle视图问答2012-06-27 11:13:30
- 选用ibatis和hibernate的区别2010-06-27 16:14:39
相关文章
页脚
公司简介- 联系方法 -招聘信息 -客户服务 -隐私政策 -博客风格 -手机博客 -VIP博客 - 订阅此博客
网易公司版权所有 ©1997-2012
×
信息提示
- 领导抽'天价烟'挨罚的却是记者
- '高富帅'欧洲杯让中国足球大病一场
- 赵楚:1900年前的中国拯救大兵行动
- 斯伟江:因讽薄熙来被判劳教的背后
- 胡锦涛翻译竟成美国脱口秀明星(图)
- Ibatis动态SQL标签用法
- Ibatis动态SQL标签用法
- iBatis动态SQL标签用法
- iBatis动态SQL标签用法
- iBatis动态SQL标签用法
- iBatis动态SQL标签用法
- iBatis动态SQL标签用法
- iBatis动态SQL标签用法
- ibatis动态SQL标签用法
- Ibatis动态SQL标签用法 .
- Ibatis动态SQL标签用法
- Ibatis动态SQL标签用法
- Ibatis动态SQL标签用法
- 【转载】iBatis动态SQL标签用法
- ibatis 动态sql用法
- iBatis动态SQL标签用法
- ibatis中的动态SQL:isNotNull,isPropertyAvailable,isNotEmpty,isGreaterThan等标签用法
- MyBatis动态SQL标签用法
- CreateThread使用(六个参数介绍)
- mono for android
- 跨dll访问STL
- 模板
- CxImage DLL 链接错误解决方案
- iBatis动态SQL标签用法
- 函数调用约定
- Flex 4.0的国际化
- 创建AVD 模拟器大小/分辨率 调整
- STL-学习笔记:顺序容器之deque
- VC++ADO一小时入门到精通
- 和菜鸟一起学单片机之入门级led流水灯
- 【设计模式】无尽加班何时休 --- 状态模式
- Explain types of tables in oracle
评论