首页 > 数据库 >动态SQL

动态SQL

时间:2023-07-11 16:56:28浏览次数:33  
标签:SQL 循环 choose key 去除 动态 属性

 

动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句

if、where、set、choose等在xml文件中以标签的形式存在

where:多条件查询时,去除多余的and

set:去除多余逗号

trim:动态拼接时去除 SQL 的前缀、后缀

  • prefix 属性: 拼接前缀

  • suffix 属性: 拼接后缀

  • prefixOverrides 属性:去除前缀

  • suffixOverrides 属性:去除后缀

foreach:相当于 Java 中的 for 循环,可实现数据库批量操作

    <foreach collection="list" item="i" index="index" open="(" separator="," close=")">
#{i.id}
</foreach>
  • collection 属性: 用来指定循环遍历的参数类型,如果参数类型为 List,则该值为 list。如果参数类型为数组,则该值为 array。

  • item 属性: 循环的key(可以自定义 key 值),如果传入的集合是实体类类型的,可以通过 key.集合中的属性来获取数据,如果就是普通的 add 存储就直接遍历 key 即可

  • index 属性: 循环的下标顺序

  • open 属性: 指定循环开始的内容

  • close 属性: 指定循环结束的内容

  • separator 属性: 指定循环在每次迭代时所使用的分隔符(根据需求自定义使用什么)

choose、when、otherwise:去除多余条件

类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default

sql片段:将某个 sql 语句代码抽取出来,使用时直接调用

  • 提取:

<sql id="if-title-author">

</sql>
  • 引用:

 <where>
    <include refid="if-title-author"></include>
</where>
 

标签:SQL,循环,choose,key,去除,动态,属性
From: https://www.cnblogs.com/hmzblogs/p/17545268.html

相关文章

  • MySQL DATE
    SQLDate函数一、SQL日期当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。......
  • MySQL NULL 值判断
    MySQLNULL值判断IFNULL函数IFNULL(expr1,expr2)用法:假如expr1不为NULL,则IFNULL()的返回值为expr1;否则其返回值为expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。mysql>SELECTIFNULL(1,0);->1mysql>SELECTIFNULL(NULL,10);......
  • pom.xml增加Mybatisplus的依赖后报错:Factory method 'sqlSessionFactory' threw excep
    出现上面的问题,是版本不匹配导致。<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency&......
  • MySQL数据库的介绍与安装
    版本的介绍版本的介绍MySQL5.0(版本不稳定)MySQL5.5(用的很少,老项目还再用)MySQL5.6(老项目用的比较多,版本很稳定)MySQL5.7(新项目在选择数据库的时候,使用的就是这个版本了)MySQL8.0(最新版本,现在生产环境用的还不是很多)MySQL的下载与安装官网地址:https://downloads......
  • 针对表的SQL语句、针对记录的SQL语句、存储引擎、数据类型、创建表的完成语法
    针对表的SQL语句有表的前提是先有库什么是表?表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段selectdatabase();查看当前所在库use  库名;使用库1.查看表showtables;查看那所有表showcreatetable t......
  • centos7 用docker搭建Mysql主从
    安装Docker和DockerCompose:安装预置:sudoyumupdateyuminstallpython3-pipsudoyumgroupinstall"DevelopmentTools"sudoyuminstallepel-releasesudoyuminstallopenssl-devellibffi-develpython3-devel安装docker:yumremovedockerdocker-clientdocker-......
  • 107.你知道静态绑定和动态绑定吗?讲讲?
    107.你知道静态绑定和动态绑定吗?讲讲?1.对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2.对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。3.静态绑定:绑定的是对象的静态类型,某特性(比如函数依赖于对象的静态类型......
  • 78.类如何实现只能静态分配和只能动态分配
    78.类如何实现只能静态分配和只能动态分配1.前者是把new、delete运算符重载为private属性。后者是把构造、析构函数设为protected属性,再用子类来动态创建2.建立类的对象有两种方式:①静态建立,例如Aa;静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,......
  • postgresql序列重复问题处理
    问题在执行数据插入时,postgresql提示morethanoneowned sequence found错误。这个和之前文章中写的序列编号错乱不同,是由数据表的一个列生成了多个序列导致的。(常见于两个数据库的拷贝、同步等操作)。如果查看序列,会发现序列中有很多重复的项目,可以执行语句:SELECT'DROPSE......
  • 编译安装MySQL8及常见错误处理
    初稿。。。1.下载https://downloads.mysql.com/archives/community/选择对应版本->选择sourcecode->系统版本一定要选all->拉至最下方-选择mysql-boost-8.0.xx.tar.gz(不下载带有boost的压缩包,需自行安装boost)图片后续添加。 2.解压tar-zxfmysql-boost-8.0.25.tar.gz......