1、Mybatis采用功能强大的基于ONGL的表达式来完成动态SQL。

2、ONGL常用的元素有:

1》if

<if test="id != null ">and id = #{id}</if>

Mybatis中,#{id}表达式获取参数有两种方式:一是从HashMap中获取集合中的property对象;二是从Java Bean中获取property对象。

2》choose

<choose><when test="id != null">and id = #{id}</when><when test="loginname != null and password != null">and loginname = #{loginname} and password = #{password}</when><otherwise>and sex = '男'</otherwise>
</choose>

3》where

<where><if test="state != null ">state = #{state}</if><if test="id != null ">and id = #{id}</if><if test="loginname != null and password != null">and loginname = #{loginname} and password = #{password}</if>
</where>

where元素知道只有在一个以上的if条件有值的情况下才去插入where子句。而且,如果最后的内容是“and”或“or”开头,where元素也知道如何将它们去掉。

 4》set

update tb_employee<set><if test="loginname != null">loginname=#{loginname},</if><if test="password != null">password=#{password},</if><if test="name != null">name=#{name},</if><if test="sex != null">sex=#{sex},</if><if test="age != null">age=#{age},</if><if test="phone != null">phone=#{phone},</if><if test="sal != null">sal=#{sal},</if><if test="state != null">state=#{state}</if></set>
where id=#{id}

set元素可以动态前置set关键字,同时也会消除无关的逗号。

5》foreach

<select id="selectEmployeeIn" resultType="com.lfy.bean.Emp">SELECT *FROM tb_employeeWHERE ID in<foreach item="item" index="index" collection="list"open="(" separator="," close=")">#{item}</foreach>
</select>

该元素主要应用于构建in条件语句。doreach元素的功能非常强大,它允许指定一个集合,声明可以用在元素体内的集合项和索引变量。也可以指定开闭匹配的字符串以及在迭代中间放置分隔符。

6》bind

<select id="selectEmployeeLikeName"  resultType="com.lfy.bean.Emp"><bind name="pattern" value="'%' + _parameter.getName() + '%'" />SELECT * FROM tb_employeeWHERE loginname LIKE #{pattern}
</select>

bind元素可以从ONGL表达式中创建一个变量并将其绑定到上下文。

转载于:https://www.cnblogs.com/ZeroMZ/p/11416619.html

Mybatis-学习笔记(5)动态SQL相关推荐

  1. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html

  2. Mybatis学习笔记之---动态sql中标签的使用

    动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段 ...

  3. Mybatis学习笔记13 - 动态sql之set标签

    示例代码: 接口定义: package com.mybatis.dao;import com.mybatis.bean.Employee;public interface EmployeeMapper ...

  4. JavaWeb学习笔记(动态SQL)

    JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...

  5. mybatis学习7之动态sql

    动态sql环境搭建和数据准备 工具类,获取UUID package com.shan.utils;import org.junit.Test;import java.util.UUID;public ...

  6. mybatis学习笔记(7)-输出映射

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(7)-输出映射 标签: mybatis [TOC] 本文主要讲解mybatis的输出映射. 输出映射有 ...

  7. 【应用篇】MyBatis学习笔记

    MyBatis学习笔记 一 环境配置 1 什么是MyBatis? ​ MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参 ...

  8. MyBatis学习笔记(1)—使用篇

    MyBatis学习笔记(1)-使用篇 MyBatis学习笔记(2)-映射关系篇 MyBatis学习笔记(3)-高级映射之一对一映射 Mybatis学习笔记(4)-高级映射之一对多映射 Mybatis学 ...

  9. 超详细Mybatis学习笔记(可供下载)

    文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...

  10. [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍

    [MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...

最新文章

  1. Jenkins插件之VShpere Cloud
  2. Bing API 2的体验
  3. Installation error: INSTALL_FAILED_CANCELLED_BY_USER
  4. linux多开终端,如何使用Tmux终端多开工具
  5. 【Java1】jdk安装/idea安装,关键字/数据类型/标识符,运算符,/包/类,运算符,if/switch,for/while
  6. docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint
  7. NET问答: 如何给 ASP.NET Core 配置指定端口 ?
  8. 使用Kubeadm创建k8s集群之部署规划(三十一)
  9. 【AD】Altium designer画pcb时出现Unknown Pin 和Failed to add class
  10. 第2章[2.2] Ext JS多类型终端-电脑、移动端(手机、平板)
  11. 物联网火爆,开发者却遇到这个大难题!
  12. Python 彻底甩掉 Java,位居 48 种编程语言之首!
  13. @程序员,你会教自己的孩子学习编程吗?
  14. DELMIA软件物流仿真:使用输送带输送物料的仿真操作方法
  15. 简单实用的微信缓存框架mmkv
  16. 利用C语言读取WAV文件
  17. 计算机操作系统学习笔记+思维导图——西安电子科技大学(第四版)
  18. vs2010中文旗舰下载地址
  19. 辛普森悖论_辛普森悖论如何影响AB测试
  20. gtx1050ti和gtx1650哪个好

热门文章

  1. 《TensorFlow深度学习应用实践》学习笔记1
  2. 工作中要注意拍照录像,证明工作完成
  3. 把几个任务分配到几个设备上的代码
  4. mysql集群脑裂问题_redis集群怎么解决脑裂问题
  5. C# dataGridView控件 获取整行宽度 整列高度 设置某列宽度 设置某行高度
  6. python 宏定义_「Rust笔记」Rust之自定义宏写法
  7. java更新linux_linux下 更新 java版本
  8. python中object类的源码在哪里-[Python之路] object类中的特殊方法
  9. 串级pid算法c语言实现,【开源】分享一个经典的串级PID算法,附源代码
  10. 如何修复MySQL配置文件?