中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

使用MyBatis如何動態(tài)調(diào)用SQL標(biāo)簽

今天就跟大家聊聊有關(guān)使用MyBatis如何動態(tài)調(diào)用SQL標(biāo)簽,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),前進(jìn)企業(yè)網(wǎng)站建設(shè),前進(jìn)品牌網(wǎng)站建設(shè),網(wǎng)站定制,前進(jìn)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,前進(jìn)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1、動態(tài)SQL片段

通過SQL片段達(dá)到代碼復(fù)用

 <!-- 動態(tài)條件分頁查詢 --> 
    <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、數(shù)字范圍查詢

所傳參數(shù)名稱是捏造所得,非數(shù)據(jù)庫字段,比如_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>

多次使用一個(gè)參數(shù)也是允許的      

<isNotEmpty prepend="and" property="_now"> 
                <![CDATA[ 
                      execplantime >= #_now# 
                   ]]> 
            </isNotEmpty> 
            <isNotEmpty prepend="and" property="_now"> 
                <![CDATA[ 
                      closeplantime <= #_now# 
                   ]]> 
            </isNotEmpty>

      3、時(shí)間范圍查詢           

   <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、函數(shù)的使用 

  <!-- 添加 --> 
    <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結(jié)果集  

 <!-- 動態(tài)條件分頁查詢 --> 
    <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> 
    <!-- 返回沒有下載的記錄總數(shù) --> 
    <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>

11、trim

 trim是更靈活的去處多余關(guān)鍵字的標(biāo)簽,他可以實(shí)踐where和set的效果。

 where例子的等效trim語句:

Xml代碼 

<!-- 查詢學(xué)生list,like姓名,=性別 -->  
<select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap">  
  SELECT * from STUDENT_TBL ST  
  <trim prefix="WHERE" prefixOverrides="AND|OR">  
    <if test="studentName!=null and studentName!='' ">  
      ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')  
    </if>  
    <if test="studentSex!= null and studentSex!= '' ">  
      AND ST.STUDENT_SEX = #{studentSex}  
    </if>  
  </trim>  
</select>

set例子的等效trim語句:

Xml代碼 

<!-- 更新學(xué)生信息 -->  
<update id="updateStudent" parameterType="StudentEntity">  
  UPDATE STUDENT_TBL  
  <trim prefix="SET" suffixOverrides=",">  
    <if test="studentName!=null and studentName!='' ">  
      STUDENT_TBL.STUDENT_NAME = #{studentName},  
    </if>  
    <if test="studentSex!=null and studentSex!='' ">  
      STUDENT_TBL.STUDENT_SEX = #{studentSex},  
    </if>  
    <if test="studentBirthday!=null ">  
      STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},  
    </if>  
    <if test="classEntity!=null and classEntity.classID!=null and classEntity.classID!='' ">  
      STUDENT_TBL.CLASS_ID = #{classEntity.classID}  
    </if>  
  </trim>  
  WHERE STUDENT_TBL.STUDENT_ID = #{studentID};  
</update>

12、choose (when, otherwise)

         有時(shí)候我們并不想應(yīng)用所有的條件,而只是想從多個(gè)選項(xiàng)中選擇一個(gè)。MyBatis提供了choose 元素,按順序判斷when中的條件出否成立,如果有一個(gè)成立,則choose結(jié)束。當(dāng)choose中所有when的條件都不滿則時(shí),則執(zhí)行 otherwise中的sql。類似于Java 的switch 語句,choose為switch,when為case,otherwise則為default。

         if是與(and)的關(guān)系,而choose是或(or)的關(guān)系。

         例如下面例子,同樣把所有可以限制的條件都寫上,方面使用。選擇條件順序,when標(biāo)簽的從上到下的書寫順序:

Xml代碼 

<!-- 查詢學(xué)生list,like姓名、或=性別、或=生日、或=班級,使用choose -->  
<select id="getStudentListChooseEntity" parameterType="StudentEntity" resultMap="studentResultMap">  
  SELECT * from STUDENT_TBL ST  
  <where>  
    <choose>  
      <when test="studentName!=null and studentName!='' ">  
          ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')  
      </when>  
      <when test="studentSex!= null and studentSex!= '' ">  
          AND ST.STUDENT_SEX = #{studentSex}  
      </when>  
      <when test="studentBirthday!=null">  
        AND ST.STUDENT_BIRTHDAY = #{studentBirthday}  
      </when>  
      <when test="classEntity!=null and classEntity.classID !=null and classEntity.classID!='' ">  
        AND ST.CLASS_ID = #{classEntity.classID}  
      </when>  
      <otherwise>  
      </otherwise>  
    </choose>  
  </where>  
</select>

看完上述內(nèi)容,你們對使用MyBatis如何動態(tài)調(diào)用SQL標(biāo)簽有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章題目:使用MyBatis如何動態(tài)調(diào)用SQL標(biāo)簽
網(wǎng)址分享:http://www.rwnh.cn/article30/jsciso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)用戶體驗(yàn)、外貿(mào)建站手機(jī)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
隆回县| 锦屏县| 同心县| 南投县| 济阳县| 安泽县| 海原县| 浑源县| 新郑市| 东台市| 盐亭县| 桃园市| 石河子市| 邵阳县| 柳林县| 延吉市| 台山市| 武冈市| 册亨县| 安龙县| 遂川县| 屏东市| 富裕县| 海宁市| 股票| 谢通门县| 寻乌县| 钟祥市| 吐鲁番市| 无棣县| 新乡市| 辽宁省| 内乡县| 上虞市| 南澳县| 长丰县| 施秉县| 日照市| 滕州市| 昆山市| 宁国市|