Mybatis XML动态SQL
- 定义
- 判断 if
- 简化条件 where
- 循环forEach
- if + forEach
- 动态SQL可以满足实际开发中
多条件
查询功能。
- 动态SQL:根据数据的不同,动态的拼凑SQL语句技术。
- 拼凑技术:
- 判断 if
- 循环forEach
- 简化条件 where
- 功能接口的功能方法
List selectBySQL(String uid);xml配置
select * from user
where uid =#{uid}
【Mybatis|Mybatis XML动态SQL】场景2:通过用户名和密码查询用户详情,如果用户名和密码不存在查询所有。
- 功能接口的功能方法
public List selectBySQL2(@Param(“username”) String username,@Param(“password”) String password);xml配置
select * from user where 1=1
and user_name = #{username}
and password = #{password}
简化条件 where
select * from user
and user_name = #{username}
and password = #{password}
循环forEach
- 使用forEach拼凑SQL片段
uid in (1,2,3)
- 步骤:
- 编写条件查询封装对象:UserVo. ids 集合
- 编写功能接口:condition
- 编写XML,拼凑条件
- 实现:
- 编写条件查询封装对象:UserVo. ids 集合
package com.czxy.ssm.vo;
import java.util.ArrayList;
import java.util.List;
/**
* @author sky
*/
public class UserVo {
private List ids = new ArrayList<>();
public List getIds() {
return ids;
}public void setIds(List ids) {
this.ids = ids;
}
}
- 编写功能接口:condition
/**
* 多条件查询
* @param userVo
* @return
*/
public List condition(UserVo userVo);
- 编写XML,拼凑条件
select * from user
'${id}'
使用forEach拼凑,如果是字符类型,需要使用引号。if + forEach 通过size可以判断list计划的元素数量
select * from user
'${id}'
推荐阅读
- 【Java面试】什么是 ISR,为什么需要引入 ISR
- #|向上转型和向下转型
- 开发技能点|Sentinel 概述
- web前端|web前端day01
- web前端|web前端day05
- web前端|web前端day07
- Java基础|Java基础.Java编译过程
- 面向对象|面向对象 抽象方法、抽象类
- mysql|MySQL 高级(进阶) SQL 语句 (一)