- 如果属性不为空,则将条件根据prepend拼接
<isnotempty property="sourcefrom" prepend="and">
m_c.sourcefrom = #sourcefrom#
</isnotempty>
- <![CDATA[ ]]>:特殊字符不会被转义,在CDATA内部的所有内容都会被解析器忽略 但 等这些标签都不会被解析
<![cdata[
m_c.channelname like '%'||#channelname#||'%'
]]>
- like 模糊查询 _ :表示单个字符
%:表示0及以上各个字符
oracle模糊查询,防止SQL注入
m_c.channelname like '%'||#channelname#||'%'
- ||:oracle中用于拼接
m_g.id||'00'
- TO_NUMBER():oracle中常用的类型转换函数之一,将字符串转换为数值型格式
TO_CHAR():将日期转换成一定格式的字符类型
to_number(m_x4.id)
to_char((sysdate),'yyyymmdd')
- where 动态SQL,根据动态条件决定是否拼接
<dynamic prepend="where">
</dynamic>
- property:指定比较的属性名称
comparevalue:表示要比较的参数
prepend:表示追加条件
<isequal property="bjtype" comparevalue="1" prepend="and" >
</isequal>
- 递归查询
START WITH:根节点的限定语句
CONNECT BY PRIOR:连接条件,查找到树中其他节点接着又作为根节点继续递归
select m_z.id from eqp_area m_z start with m_z.parent = #xzqyid# connect by prior m_z.id=m_z.parent
- exists:强调是否有返回结果集,有则为真
not exists: - DECODE():将查询结果翻译成其他值
一个参数:DECODE(条件,值,翻译值1,翻译值2)
两个参数:DECODE(条件,值1,翻译值1,值2,翻译值2,…缺省值)
DECODE(M_AA.ALL_NUM,0,100,round((ALL_NORMAL*100/M_AA.ALL_NUM), 2))
- ROUND():用于把数值字段舍入为指定的小数位数
round((ALL_NORMAL*100/M_AA.ALL_NUM), 2)
- LEFT JION 表名 ON:左外连接查询(左全)
- 满足条件就拼接
<if test=""> </if>
- 只选择一个满足条件的拼接
<choose>
<when test = "null != channelState and 'A'.toString() == channelState">
<![CDATA[ AND M_B.CHANNELSTATE = 'A' ]]>
</when>
<when test = "null != channelState and '' != channelState and 'A'.toString() != channelState">
<![CDATA[ AND M_B.CHANNELSTATE != 'A' ]]>
</when>
</choose>
- prefix:在trim标签内的sql语句上加上前缀
suffix:在trim标签内的sql语句上加上后缀
prefixOverrides:指定去除多余的前缀内容
suffixOverrides:指定去除多余的后缀内容
<trim prefix="WHERE" suffixOverrides="AND">
<if test="limitStart != null and '' != limitStart" >
<![CDATA[ M_C.RO > #{limitStart,jdbcType=INTEGER} AND ]]>
</if>
</trim>
- ROWNUM
rownum:伪列,