博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis基础:MyBatis动态SQL(3)
阅读量:6549 次
发布时间:2019-06-24

本文共 2794 字,大约阅读时间需要 9 分钟。

1. 概述

  MyBatis中动态SQL包括元素:

元素 作用 备注
if 判断语句 单条件分支判断
choose(when、otherwise) 相当于Java中的case when语句 多条件分支判断
trim(where、set) 辅助元素 用于处理SQL拼接问题
foreach 循环语句 用于in语句等列举条件

2. if元素

  if元素是最常用的判断语句,常与test属性联合使用。

2.1 if

2.2 if + where

  MyBatis中where标签会判断如果所包含的标签中有返回值,则插入一个‘where’。此外,如果标签返回的内容是以AND或OR开头,则自动删除开头的AND或OR。

2.3 if + set

UPDATE role
role_name = #{roleName},
remark LIKE CONCAT('%', #{remark, jdbcType=VARCHAR}, '%')
WHERE id = #{id}

  上面形式,当ramark=null时,动态SQL语句会由于多出一个“,”而错误。

3. choose(when,otherwise)元素

4.trim元素

4.1 trim:if + where

4.2 trim:if + set

UPDATE role
role_name = #{roleName},
remark LIKE CONCAT('%', #{remark, jdbcType=VARCHAR}, '%')
WHERE id = #{id}

5. foreach元素

  foreach元素是一个循环语句,作用是遍历集合,支持遍历数组、List、Set接口的集合。

import org.apache.ibatis.annotations.Param;
List
findByIds(@Param("ids") List
ids);

  其中,

    collection:传入的参数名称,可以是一个数组、List、Set等集合

    item:循环中当前的元素

    index:当前元素在集合的位置下标

    open和close:包裹集合元素的符号

    separator:各个元素的间隔符

int insertBatch(List
list);
INSERT role ( role_name ) VALUES
( #{item.roleName} )

6. bind元素

  bind元素的作用是通过OGNL表达式去自定义一个上下文变量。

List
findBySearchText(@Param("searchText") String searchText);

  其中,

    searchText:传入的参数名称

转载于:https://www.cnblogs.com/libingql/p/7475227.html

你可能感兴趣的文章
程序员杂记系列
查看>>
【树莓派】制作树莓派所使用的img镜像(一)
查看>>
理解网站并发量
查看>>
spring整合elasticsearch之环境搭建
查看>>
TensorFlow 架构与设计-编程模型【转】
查看>>
An Introduction to Asynchronous Programming and Twisted (2)
查看>>
vue 组件编码规范
查看>>
Java 泛型: 什么是PECS(Producer Extends, Consumer Super)
查看>>
软件包管理-打包解包压缩解压
查看>>
maven构建scala项目
查看>>
Memcached分布式缓存-windows上初步使用-网摘
查看>>
IIS无法启动的问题
查看>>
如何通过结构中的某个变量获取结构本身的指针?(container_of详解)
查看>>
Android 关于mnt/sdcard和sdcard的区别
查看>>
特征变换(7)总结
查看>>
网络工程师之路怎么走?
查看>>
go语言unix域套接字发送udp报文
查看>>
2.并发和并行
查看>>
OpenGL学习(二)用户与交互
查看>>
神奇的代码-常见错误代码注意点
查看>>