笔记 笔记
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

EasT-Duan

Java 开发
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

购买兑换码请添加

添加时候请写好备注,否则无法通过。

  • Maven

  • Bootstrap

  • Spring

  • Spring MVC

  • MyBatis

    • MyBatis 简介
    • Spring 整合 MyBatis
    • Spring 整合 Druid
    • 动态 SQL
      • 动态 Sql
        • If 标签
        • Where 标签
        • Sql片段
        • Foreach
        • 场景一
        • 场景二
        • 场景三
    • 关联关系
  • JUnit

  • GitFlow 工作流指南

  • SpringBoot

  • Reactor

  • 微服务

  • Java Web
  • MyBatis
EasT-Duan
2023-09-14
目录

动态 SQL

欢迎来到我的 ChatGPT 中转站,极具性价比,为付费不方便的朋友提供便利,有需求的可以添加左侧 QQ 二维码,另外,邀请新用户能获取余额哦!最后说一句,那啥:请自觉遵守《生成式人工智能服务管理暂行办法》。

# 动态 Sql

# If 标签

注意字符串类型的数据需要要做不等于空字符串校验。

例如:性别不等于 null 或者是 username 不等于 null。

# Where 标签

映射文件中的 where 标签可以过滤掉条件语句中的第一个 and 或 or 关键字。以上 SQL 当 prodId!=null 时会被 mybatis 的 where
标签去除掉多余的 and 关键字,生成的 sql 如下:

SELECT prod_id prodId, vend_id vendId, prod_name prodName, prod_desc prodDesc
FROM Products
WHERE prod_id = ?
  AND prod_name = ?
1
2
3
4

注意

where 标签只能去除第一个条件中出现的前置 and 关键字。像以下情况,where 就无能为力了

Mybatis 会把此 SQL 语句拼接成:

SELECT prod_id prodId, vend_id vendId, prod_name prodName, prod_desc prodDesc
FROM Products
WHERE prod_id = ?
  AND prod_name = ?
  AND
1
2
3
4
5

# Sql 片段

我们可以将重复的 sql 脚本提取出来

# Foreach

根据多个 id 查询用户信息

SELECT *
FROM user
WHERE id IN (1, 10, 24)
1
2
3

# 场景一

  1. 编写 UserMapper

    public List<User> selectUsersByIds(QueryVO vo);
    
    1
  2. 编写 QueryVO

    public class QueryVO {
    	//------省略-----
        private List<Integer> idsList;
    	//------省略-----
    }
    
    1
    2
    3
    4
    5
  3. 编写 UserMapper.xml

  • Item:这个这个类似于 jstl 中 foreach 的,item 这个地方的值你设置为 aaa, 底下就必须写 #{aaa}
  • separator:是使用什么分割符
  • open:类似这个条件参数的左边是什么,这里是左括号
  • close:类似这个条件参数的右边是什么,这里是右括号

# 场景二

  1. 编写 UserMapper

    public List<User> selectUsersByIds(Integer [] ids);
    
    1
  2. 编写 UserMapper.xml

注意

如果使用的是 Integer 或者是 String 这种数组一定要写成 array,因为 mybatis 底层是将这个数组变成了一个 map 集合,并且将这个
map 集合的 key 设置成了 array,所以写成其他的会报错。

# 场景三

  1. 编写 UserMapper

    public List<User> selectUsersByIds(List<Integer> ids);
    
    1
  2. 编写 UserMapper.xml

如果入参类型为 List 的话 Collection 中的值就为 list(小写)

#MyBatis
上次更新: 2025/04/12, 05:37:39
Spring 整合 Druid
关联关系

← Spring 整合 Druid 关联关系→

最近更新
01
Reactor 核心
02-24
02
前置条件
10-30
03
计算机网络
09-13
更多文章>
Theme by Vdoing | Copyright © 2019-2025 powered by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式