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, 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 &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文件各种语法介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Mybatis通用Mapper介绍与使用

    使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改.这工作量和效率的影响或许就是区别增删改查程序员和真正程序员的屏障.这时,通用Mapper便应运而生-- 什么是通用Mapper 通用Mapper就是为了解决单表增删改查,基于Mybatis的插件.开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删

  • Mybatis对mapper的加载流程深入讲解

    今天来分析Configuration初始化的最后一部分mapper的加载.​ 加载方法mapperElement XMLConfigBuilder配置Configuration的parseConfiguration方法还剩最后一行解析代码:mapperElement(root.evalNode("mappers")); mapperElement方法源码与详解如下图: 从源码可以得出一些结论: mappers节点支持mapper和package两种类型子节点: package子节点只需

  • Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper的内置方法 model层就是实体类,对应数据库的表.controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action.Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接.至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用. 下面是介绍一下Mapper的内置方法: 1.countByExample ===>根据条件查询数量 int countByExample(UserE

  • 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="par

  • 在mybatis中使用mapper进行if条件判断

    目的: 在使用mybatis框架中mapper文件有自动生成,但有时需要自己添加sql语句进行开发,当遇到需要使用 if进行条件判断的时候该怎么写? 查询sql语句如下: <select id="queryData" parameterType="com.pojo.QueryDetailReq" resultType="com.pojo.MxDataInfo"> select * from db_trd.tb_trd_secu_ord

  • MyBatis不同Mapper文件引用resultMap实例代码

    ClassesMapper.xml: <resultMap type="Classes" id="classesMap"> <id property="id" column="c_id" javaType="int"/> <result property="name" column="c_name" javaType="Stri

  • Mybatis增删改查mapper文件写法详解

      1. 插入 <mapper namespace="需要实现接口的全类名"> <insert id="需要实现的接口里的方法名" parameterType="方法参数类型,如果是对象要写全类名"> INSERT sql命令(命令里通过#{}获取对象属性) <!--注意属性名区分大小写 --> </insert> <mapper> EG: <mapper namespace=&q

  • 如何自动生成Mybatis的Mapper文件详解

    前言 工作中使用mybatis时我们需要根据数据表字段创建pojo类.mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作很琐碎和重复,mybatis官方也发现了这个问题,因此给我们提供了mybatis generator工具来帮我们自动创建pojo类.mapper文件以及dao类并且会帮我们配置好它们的依赖关系. 实际上,最非常流行MyBatis-Plus中内置了代码生成器:采用代码或者 Maven 插件可快速生成 Mapper . Model . Service . Co

  • MyBatis找不到mapper文件的实现

    用的Idea,在写MyBatis时,测试发现有以下的报错信息 Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource dao/PersonMapper.xml 即找不到mapper文件 下面是我的目录结构 发现路径没问题啊,粘贴的相对路径啊 查阅资料后,发现idea对目录结构里的存放的文件类型有要求,mapper文件必须放入到resources目录里, 但后期mappe

  • Mybatis generator mapper文件覆盖原文件的示例代码

    generatorConfig.xml编写 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config

  • mybatis 运行时加载自定义mapper文件方式

    mybatis 运行时加载自定义mapper文件 用mybatis一定要写mapper文件,这是使用mybatis的常识,但有时候应用需求,mapper文件中的节点需要动态生成,或者根据业务场景进行组装,那这个时候的SQL语句直接写在mapper文件显然不可取,又或者采用动态SQL完成,今天介绍一种方式,支行时加载自定义mapper配置文件. 我首先介绍一种mapper文件存在的写法,也是大家常用的,至于spring-mybatis配置方法,我这里就不列了: dao接口: package com

  • mybatis 多表关联mapper文件写法操作

    两张表SystemParam(系统参数表) Suit (主题) SystemParam 与 Suit 是多对一 Suit 的higerSuit字段是Suit 的父及主题id 是多对一,需要自连接查询,因为重名所以父表sql字段加别名 mapper方法 Systemparam selectJoinSuit(String strparamcode); Po类 public class Systemparam { //ManyToOne "主题" private Suit suitobj;

  • springboot实现指定mybatis中mapper文件扫描路径

    目录 指定mybatis中mapper文件扫描路径 mybatis配置多个扫描路径写法 指定mybatis中mapper文件扫描路径 所有的mapper映射文件 mybatis.mapper-locations=classpath*:com/springboot/mapper/*.xml 或者resource下的mapper映射文件 mybatis.mapper-locations=classpath*:mapper/**/*.xml mybatis配置多个扫描路径写法 百度得到,但是很乱,稍微

随机推荐