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>
以及傳入?yún)⑷氲腷ean類:
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, Map<String, Object> paramMap, int paramInt1,
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;
}
}
補(bǔ)充 知識(shí):mybatis的mapper文件的大于號(hào)特殊符號(hào)使用
第一種方法:
用了轉(zhuǎn)義字符把>和<替換掉,然后就沒有問題了。
SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE
附:XML轉(zhuǎn)義字符
|
< |
< |
小于號(hào) |
|
> |
> |
大于號(hào) |
|
& |
& |
和 |
|
' |
' |
單引號(hào) |
|
" |
" |
雙引號(hào) |
第二種方法:
因?yàn)檫@個(gè)是xml格式的,所以不允許出現(xiàn)類似“>”這樣的字符,但是都可以使用<![CDATA[ ]]>符號(hào)進(jìn)行說明,將此類符號(hào)不進(jìn)行解析
你的可以寫成這個(gè):
mapper文件示例代碼
<![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00' ]]>
在mybatis 的mapper配置文件sql語句中, 有時(shí)用到 大于, 小于等等的比較, 直接寫在里面就被當(dāng)做標(biāo)簽的開頭來處理了, 所以不可.現(xiàn)在又2種解決方法:
一, 用<![CDATA[ ]]>標(biāo)識(shí),例如:
<if test="menu.authority != null">
<![CDATA[ and authority < #{menu.authority}]]>
</if>
其中不但能用大于'>', 小于'<', 小于等于'<=', 大于等于'>=' 也是可以的.
二, 轉(zhuǎn)義, 例如:
<if test="menu.authority != null">
and authority < #{menu.authority}
</if>
如此這般......
同樣可以可以和等號(hào)'='一起來使用, 來表示大于等于, 小于等于等.如
<if test="menu.authority != null">
and authority >= #{menu.authority}
</if>
以上這篇mybatis的使用-Mapper文件各種語法介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot 防止接口惡意刷新和暴力請(qǐng)求的實(shí)現(xiàn)
本文主要介紹了Spring Boot 防止接口惡意刷新和暴力請(qǐng)求的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
SpringBoot中4種接口冪等性的實(shí)現(xiàn)策略
冪等性是指對(duì)同一操作執(zhí)行多次與執(zhí)行一次的效果相同,不會(huì)因?yàn)橹貜?fù)執(zhí)行而產(chǎn)生副作用,本文整理了4個(gè)SpringBoot實(shí)現(xiàn)接口冪等性的方法,大家可以根據(jù)需要進(jìn)行選擇2025-04-04
SpringBoot集成Spring Security用JWT令牌實(shí)現(xiàn)登錄和鑒權(quán)的方法
這篇文章主要介紹了SpringBoot集成Spring Security用JWT令牌實(shí)現(xiàn)登錄和鑒權(quán)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Spring boot使用spring retry重試機(jī)制的方法示例
這篇文章主要介紹了Spring boot使用spring retry重試機(jī)制的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Java concurrency之AtomicLong原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
AtomicLong是作用是對(duì)長整形進(jìn)行原子操作。下面通過本文給大家介紹Java concurrency之AtomicLong原子類的相關(guān)知識(shí),感興趣的朋友一起看看吧2017-06-06

