mybatis的使用-Mapper檔案各種語法介紹
一、查詢
mybatis自定義查詢條件,queryString、queryMap、limit,Mapper檔案寫法如下:
<select id="getByQueryParam" parameterType="com.systom.base.BaseDaoQueryParam" resultMap="BaseResultMap"> SELECT * FROM user WHERE 1 = 1 <if test="paramString != null"> and ${paramString} </if> <foreach collection="paramMap.keys" item="k" separator=""> <if test="null != paramMap[k]"> and ${k} = #{paramMap.${k}} </if> </foreach> <if test="paramInt1 != null and paramInt1 > 0 and paramInt2 != null and paramInt2 > 0"> limit #{paramInt1,jdbcType=INTEGER},#{paramInt2,jdbcType=INTEGER} </if> </select>
以及傳入參入的bean類:
package com.systom.base; import java.io.Serializable; import java.util.HashMap; import java.util.Map; public class BaseDaoQueryParam implements Serializable { private static final long serialVersionUID = -8917191044499296040L; private String paramString; private Map<String,Object> paramMap = new HashMap<String,Object>(); private int paramInt1; private int paramInt2; private String orderBy; private String orderType; public BaseDaoQueryParam(String paramString,Map<String,Object> paramMap,int paramInt1,int paramInt2) { super(); this.paramString = paramString; if(paramMap != null) this.paramMap = paramMap; this.paramInt1 = paramInt1; this.paramInt2 = paramInt2; } public BaseDaoQueryParam(String paramString,int paramInt2,String orderBy,String orderType) { super(); this.paramString = paramString; if(paramMap != null) this.paramMap = paramMap; this.paramInt1 = paramInt1; this.paramInt2 = paramInt2; this.orderBy = orderBy; this.orderType = orderType; } public String getParamString() { return paramString; } public void setParamString(String paramString) { this.paramString = paramString; } public Map<String,Object> getParamMap() { return paramMap; } public void setParamMap(Map<String,Object> paramMap) { this.paramMap = paramMap; } public int getParamInt1() { return paramInt1; } public void setParamInt1(int paramInt1) { this.paramInt1 = paramInt1; } public int getParamInt2() { return paramInt2; } public void setParamInt2(int paramInt2) { this.paramInt2 = paramInt2; } public String getOrderBy() { return orderBy; } public void setOrderBy(String orderBy) { this.orderBy = orderBy; } public String getOrderType() { return orderType; } public void setOrderType(String orderType) { this.orderType = orderType; } }
補充 知識:mybatis的mapper檔案的大於號特殊符號使用
第一種方法:
用了轉義字元把>和<替換掉,然後就沒有問題了。
SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE
附:XML轉義字元
< |
< |
小於號 |
> |
> |
大於號 |
& |
& |
和 |
' |
' |
單引號 |
" |
" |
雙引號 |
第二種方法:
因為這個是xml格式的,所以不允許出現類似“>”這樣的字元,但是都可以使用<![CDATA[ ]]>符號進行說明,將此類符號不進行解析
你的可以寫成這個:
mapper檔案示例程式碼
<![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00' ]]>
在mybatis 的mapper配置檔案sql語句中,有時用到 大於,小於等等的比較,直接寫在裡面就被當做標籤的開頭來處理了,所以不可.現在又2種解決方法:
一,用<![CDATA[ ]]>標識,例如:
<if test="menu.authority != null"> <![CDATA[ and authority < #{menu.authority}]]> </if>
其中不但能用大於'>',小於'<',小於等於'<=',大於等於'>=' 也是可以的.
二,轉義,例如:
<if test="menu.authority != null"> and authority < #{menu.authority} </if>
如此這般......
同樣可以可以和等號'='一起來使用,來表示大於等於,小於等於等.如
<if test="menu.authority != null"> and authority >= #{menu.authority} </if>
以上這篇mybatis的使用-Mapper檔案各種語法介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。