iBatis动态SQL标签用法

来源:互联网 发布:centos 安装bugzilla 编辑:程序博客网 时间:2024/05/14 10:00
iBatis动态SQL标签用法  

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>
 
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>
 
多次使用一个参数也是允许的
                        <isNotEmptyprepend="and"property="_now">
                                <![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>
 
4、in查询
                        <isNotEmptyprepend="and"property="_in_state">
                                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>
 
6、or条件
                        <isEqualprepend="and"property="_exeable"compareValue="N">
                                <![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>
 
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>
 
        <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>
 
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>
 
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>
 评论这张
转发至微博
转发至微博
0  分享到:        
阅读(5276)|评论(0)|转载 (2) |举报

历史上的今天

  • Oracle中的视图详解2012-06-27 11:17:43
  • Oracle视图问答2012-06-27 11:13:30
  • 选用ibatis和hibernate的区别2010-06-27 16:14:39

相关文章

最近读者

登录后,您可以在此留下足迹。
77056278
77056278
qun
qun
selina721521
selina72
811195955
81119595
hb19881011@126
hb198810
yanshuailong8917
yanshuai
m15940927950
m1594092
412175111
41217511

评论

点击登录|昵称:
  取消
换一张
 
上一页1...-1-1-1-1-1-1-1...-1下一页
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

公司简介- 联系方法 -招聘信息 -客户服务 -隐私政策 -博客风格 -手机博客 -VIP博客 - 订阅此博客

网易公司版权所有 ©1997-2012

×
信息提示
  • 网易LOFTER, 精致的轻博客社区
  • 六小龄童  西游记中的龙套大师去世
  • 稻盛和夫  日本'泡沫经济'时的地王
  • 领导抽'天价烟'挨罚的却是记者
  • '高富帅'欧洲杯让中国足球大病一场
  • 赵楚:1900年前的中国拯救大兵行动
  • 斯伟江:因讽薄熙来被判劳教的背后
  • 胡锦涛翻译竟成美国脱口秀明星(图)
 
 
 
 
 
 
 
 
原创粉丝点击