1. 程式人生 > 程式設計 >mybatis的使用-Mapper檔案各種語法介紹

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 &lt;= CURRENT_DATE AND end_date &gt;= CURRENT_DATE

附:XML轉義字元

&lt;

<

小於號

&gt;

>

大於號

&amp;

&

&apos;

'

單引號

&quot;

"

雙引號

第二種方法:

因為這個是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 &lt; #{menu.authority} 
</if> 

如此這般......

同樣可以可以和等號'='一起來使用,來表示大於等於,小於等於等.如

<if test="menu.authority != null"> 
 and authority &gt;= #{menu.authority} 
</if> 

以上這篇mybatis的使用-Mapper檔案各種語法介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。