`
danandyu8013
  • 浏览: 37445 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

iBatis动态SQL标签用法

阅读更多

 

 

 

iBatis动态SQL标签用法  

 

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>


分享到:
评论

相关推荐

    ibatis动态SQL标签用法

    自己整理的非常好用 好东西向大家分享 └ ^o^ ┘

    iBATIS实战

    8.3.4 将动态SQL标签应用到静态SQL上 141 8.4 高级动态SQL技术 142 8.4.1 定义结果数据 142 8.4.2 定义所需的输入 143 8.4.3 以静态格式编写SQL 144 8.4.4 将动态SQL标签应用到静态SQL上 145 8.5 动态SQL的其他替代...

    代码自动生成器

    然而,当下比较流行的,绝大多数MySQL、iBatis开源代码生成器,只能生成动态SQL语句和几个简单粗糙的增删改查方法。 对于追求高质量代码的项目而言,都希望拥有高端的标准SQL语句,而不是相对低端的动态SQL语句。...

    Java高手真经_应用框架卷_Java_Web核心框架.part1.rar

     业务层框架spring:讲解spring的入门配置与ioc容器,并讲解使用spring进行mvc应用开发的标签库、国际化、数据校验、数据库开发技术。 多层框架集成:实现5种框架的搭配集成,分别实现ssh 1、ssi 1、ssh 2、ssi 2...

    Java高手真经_应用框架卷_Java_Web核心框架.part2.rar

     业务层框架spring:讲解spring的入门配置与ioc容器,并讲解使用spring进行mvc应用开发的标签库、国际化、数据校验、数据库开发技术。 多层框架集成:实现5种框架的搭配集成,分别实现ssh 1、ssi 1、ssh 2、ssi 2...

    Java高手真经_应用框架卷_Java_Web核心框架.part3.rar

     业务层框架spring:讲解spring的入门配置与ioc容器,并讲解使用spring进行mvc应用开发的标签库、国际化、数据校验、数据库开发技术。 多层框架集成:实现5种框架的搭配集成,分别实现ssh 1、ssi 1、ssh 2、ssi 2...

    Java高手真经 应用框架卷 源码

    业务层框架Spring:讲解Spring的入门配置与IoC容器,并讲解使用Spring进行MVC应用开发的标签库、国际化、数据校验、数据库开发技术。多层框架集成:实现5种框架的搭配集成,分别实现SSH 1、SSI 1、SSH 2、SSI 2集成...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. ...

    spring chm文档

    13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9...

    Spring 2.0 开发参考手册

    13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9...

    Spring中文帮助文档

    13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. checkboxes标签 13.9.6. radiobutton标签 13.9.7. radiobuttons标签 13.9.8. password标签 ...

    Spring API

    13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. checkboxes标签 13.9.6. radiobutton标签 13.9.7. radiobuttons标签 13.9.8. password标签 ...

    spring in action英文版

     3.3.4 使用动态切入点  3.3.5 切入点实施  3.4 创建引入  3.4.1 实现IntroductionInterceptor  3.4.2 创建一个引入Advisor  3.4.3 谨慎使用引入通知  3.5 使用ProxyFactoryBean  3.6 自动...

    jfinalpluginsjfinal-dreampie.zip

    使用方法请移步:http://my.oschina.net/wangrenhui1990/blog 部分代码正在调试和开发中,欢迎大家使用 介绍-&gt; jfinal-dreampie是一个基于jfinal的开源框架库,主要集成或调优功能如下(由于篇幅原因...

Global site tag (gtag.js) - Google Analytics