动态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" >  
                                
                                img_size >= #_img_size_ge# 
                        ]]> 
                         isNotEmpty >  
                         < isNotEmpty   prepend ="and"   property ="_img_size_lt" >  
                                
                                img_size  <  #_img_size_lt# 
                        ]] >  
                         isNotEmpty >  

多次使用一个参数也是允许的

 <isNotEmpty prepend="and" property="_now"> 
                                                                             execplantime >= #_now# 
                                     ]]> 
                        isNotEmpty> 
                        <isNotEmpty prepend="and" property="_now"> 
                                                                             closeplantime <= #_now# 
                                     ]]> 
                        isNotEmpty>

3、时间范围查询

<isNotEmpty prepend="" property="_starttime"> 
                                <isNotEmpty prepend="and" property="_endtime"> 
                                                                                 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"> 
                                                                 (t.finished='11'    or t.failure=3) 
                        ]]> 
                        isEqual>

<isEqual prepend="and" property="_exeable" compareValue="Y"> 
                                                                 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>

你可能感兴趣的:(orcal,mysql)