mybatis中的sql

mybatis中有些特殊字符应用在sql中,最常见的莫过于“>” 和 “<”。

“>”在mybatis中是“大于”的意思,等同于符号“>”。

“&lt;”在mybatis中是“小于”的意思,等同于符号“<”。

例如在mybatis中配置这样的一段sql:

  <select id="findAllByCondition" parameterType="RYXX" resultMap="ryxxResult">
  SELECT u.*,
      CASE
      WHEN u.RYZT = 1 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) &gt; 0 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) &lt; 1 THEN 1
      WHEN u.RYZT = 1 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) &lt; 1 THEN 2
      ELSE 0 END sfdq,
      dw.DWMC FROM B_TZ_RYGL_RYXX u LEFT JOIN B_RS_DW dw ON u.DW = dw.DWBH
  <where>
       1=1
   <if test="xh != null and xh != ''">AND u.XH = #{xh}</if>
   <if test="jyxm != null and jyxm != ''">AND u.JYXM like '%'||#{jyxm}||'%'</if>
   <if test="gh != null and gh != ''">AND u.GH = #{gh}</if>
   <if test="dj != null and dj != ''">AND u.DJ = #{dj}</if>
   <if test="ryzt != null and ryzt != ''">AND u.RYZT = #{ryzt}</if>
   <if test="nl != null and nl != ''">AND (to_char(sysdate, 'yyyy') - substr(u.SFZH, 7, 4)) = #{nl}</if>
   <if test="xl != null and xl != ''">AND u.XL = #{xl}</if>
   <if test="yj != null and yj != ''">AND u.YJ = #{yj}</if>
   <if test="xb != null and xb != ''">AND u.XB = #{xb}</if>
   <if test="htkssj != null and htkssj != ''">AND u.HTKSSJ = #{htkssj}</if>
   <if test="dw != null and dw != ''">AND u.DW IN (SELECT DWBH FROM B_RS_DW d start with d.DWBH=#{dw} connect by d.LSGX=prior d.DWBH)</if>
   <if test="sfdq == 1">AND u.RYZT = 1 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) &gt; 0 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) &lt; 1</if>
   <!-- 此处增加字段检索条件 -->
      </where>
  ORDER BY u.DJSJ DESC
 </select>

经过plsql的自动转换过后(此处的查询条件仅u.DW一项):SELECT u.*,
       CASE
         WHEN u.RYZT = 1 AND
              MONTHS_BETWEEN(TO_DATE(u.HTJSSJ, 'YYYY-MM-DD'), SYSDATE) > 0 AND
              MONTHS_BETWEEN(TO_DATE(u.HTJSSJ, 'YYYY-MM-DD'), SYSDATE) < 1 THEN
          1
         WHEN u.RYZT = 1 AND
              MONTHS_BETWEEN(TO_DATE(u.HTJSSJ, 'YYYY-MM-DD'), SYSDATE) < 1 THEN
          2
         ELSE
          0
       END sfdq,
       dw.DWMC
  FROM B_TZ_RYGL_RYXX u
  LEFT JOIN B_RS_DW dw
    ON u.DW = dw.DWBH
 WHERE 1 = 1
   AND u.DW IN (SELECT DWBH
                  FROM B_RS_DW d
                 start with d.DWBH = ?
                connect by d.LSGX = prior d.DWBH)
 ORDER BY u.DJSJ DESC





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值