时间:2021-05-19
一、查询
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, 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; }}补充 知识: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文件各种语法介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
可能很多童鞋都还不是很清楚在mybatis可以使用各种脚本语言来定义Mapper文件里面的动态SQL;目前mybatis支持的脚本语言有XML(默认的);Vel
一、介绍本教程将介绍如何使用mybatis-plus工具自动给我们生成Controller、Service、Entity、Mapper、Mapper.xml层代
1.注解方式,yml文件配置上以下就可以直接使用mybatis-plus:mapper-locations:classpath:mapper/*.xmlconf
一、Mybatis中的延迟加载1、延迟加载背景:Mybatis中Mapper配置文件中的resultMap可以实现高级映射(使用association、coll
两种防水都可以,但是使用方式不同。@mapper需要mybatis和mybatis-spring的版本足够的高才可以。不然导入不到@mapper。补充知识:关于