mybatis动态SQL if的test写法及规则详解

目录
  • mybatis动态SQL if的test写法
    • 使用动态SQL最常见情景
    • 官方语法规则手册
    • 举个例子
  • mybatis if test动态sql语句

mybatis动态SQL if的test写法

使用动态SQL最常见情景

是根据条件包含 where 子句的一部分。

比如:

<select id="findActiveBlogWithTitleLike"
     resultType="Blog">
  SELECT * FROM BLOG
  WHERE state = ‘ACTIVE'
  <if test="title != null">
    AND title like #{title}
  </if>
</select>

其中 test 的表达式是基于OGNL 的表达式,语法规则也是OGNL的语法规则。

官方语法规则手册

OGNL官方表达式手册:https://commons.apache.org/proper/commons-ognl/language-guide.html

举个例子

上图是官方指导的一部分,主要说明了,在test中无法使用<= 等符号可以使用 lte 代替。

运算符 代替字符
< lt
<= lte
> gt
>= gte

mybatis if test动态sql语句

<select id="getStudentId" parameterType="java.lang.String" resultType="java.lang.String">
        SELECT MAX(Student_ID) FROM Student
        <where>
            <if test="classid !=null and classid !=''">  
                AND CLASS_ID = {student.classID} 
            </if>
            <if test="age ==null or age ==''">  
                AND AGE = {student.age}
            </if>
        </where>
</select>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • mybatis的动态sql之if test的使用说明

    参数为String,if test读取该参数代码 <select id="getMaxDepartId" parameterType="java.lang.String" resultType="java.lang.String"> SELECT MAX(DEPART_ID) FROM T_P_DEPART <where> <if test="_parameter!=null and _parameter!

  • MyBatis的动态SQL语句实现

    1. 动态SQL之<if>标签 我们根据实体类的不同取值,使用不同的SQL语句来进行查询.比如在id如果不为空时可以根据id查询,如果username不为空时还要加入用户名作为条件,这种情况在我们的多条件组合查询中经常会碰到. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN&qu

  • Mybatis动态SQL之IF语句详解

    Mysql 5.0 以后,支持了动态sql语句,我们可以通过传递不同的参数得到我们想要的值. 1. Mybatis–动态SQL之IF语句 没有搭建环境的请点击 1.1 BlogMapper.java // 查询博客 List<Blog> queryBlogIf(Map map); 1.2 BlogMapper.xml <select id="queryBlogIf" parameterType="map" resultType="Blog

  • mybatis动态SQL if的test写法及规则详解

    目录 mybatis动态SQL if的test写法 使用动态SQL最常见情景 官方语法规则手册 举个例子 mybatis if test动态sql语句 mybatis动态SQL if的test写法 使用动态SQL最常见情景 是根据条件包含 where 子句的一部分. 比如: <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state

  • mysql存储过程 在动态SQL内获取返回值的方法详解

    MySql通用分页存储过程过程参数 复制代码 代码如下: p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4000),p_order varchar(100),p_pageindex int,p_pagesize int,out p_recordcount int,out p_pagecount int $:begin    declare v_sqlcounts varchar(4000);    declare v_s

  • 自己动手实现mybatis动态sql的方法

    发现要坚持写博客真的是一件很困难的事情,各种原因都会导致顾不上博客.本来打算写自己动手实现orm,看看时间,还是先实现一个动态sql,下次有时间再补上orm完整的实现吧. 用过mybatis的人,估计对动态sql都不陌生,如果没有用过,就当看看热闹吧.我第一次接触mysql是在大四的时候,当时就觉得动态sql这东西很牛,很灵活,一直想搞明白怎么实现的,尽管当时已经能够写ioc,mvc和简单的orm框架(仿mybaits但是没有动态sql部分),但是仍然找不到mybatis核心的动态sql到底在哪

  • mybatis动态sql之Map参数的讲解

    mybatis 动态sql之Map参数 Mapper文件: <mapper namespace="com.cn.shoje.oa.modules.logistics.dao.PurcDao"> <select id="findAll" parameterType="Map" resultType="Purchase"> select * from prod_purchase where 1=1 <

  • Mybatis 动态SQL的几种实现方法

    案例sql脚本 DROP DATABASE IF EXISTS `javacode2018`; CREATE DATABASE `javacode2018`; USE `javacode2018`; DROP TABLE IF EXISTS t_user; CREATE TABLE t_user( id int AUTO_INCREMENT PRIMARY KEY COMMENT '用户id', name VARCHAR(32) NOT NULL DEFAULT '' COMMENT '用户名'

  • MyBatis动态SQL表达式详解

    目录 if choose when otherwise trim where set foreach sql片段 动态 sql 简单来讲就是我们能通过条件的设置生成不同的 sql,MyBatis 中常用的动态 sql 表达式主要是有五种: if choose (when, otherwise) trim, where, set foreach sql if 动态 sql 中最常见的场景是根据条件查询,比如要实现一个查询语句,当不传任何参数时查询所有用户,当传了 id 或者 name 时根据条件进

  • 史上最简单的MyBatis动态SQL入门示例代码

    假如有如下的关于书籍基本信息的表: DROP DATABASE IF EXISTS `books`; CREATE DATABASE `books`; USE books; DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL, `author` varchar(64) DEFAULT NULL, `pres

  • Mybatis入门教程(四)之mybatis动态sql

    推荐阅读: MyBatis入门学习教程(一)-MyBatis快速入门  什么是动态SQL? 动态SQL有什么作用? 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误.Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率. 下面就去感受Mybatis动态SQL

  • 详解Mybatis动态sql

    1.什么是mybatis动态sql 看到动态,我们就应该想到,这是一个可以变化的sql语句 MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑 2.mybatis动态sql使用前准备 a.数据库表 b.创建类 3.使用mybatis动态sql,得先知道一些属性值 一,插入 selectKey:在sql语句前后或后执行的sql语句 keyColumn:对应字段名或别名 keyProperty:对应实体类的属性名或map的key值 order:在执行语句

  • Mybatis动态SQL之if、choose、where、set、trim、foreach标记实例详解

    动态SQL就是动态的生成SQL. if标记 假设有这样一种需求:查询用户,当用户名不等于"admin"的时候,我们还需要密码为123456. 数据库中的数据为: MyBatisConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

随机推荐