mybatis-Plus 之 apply 拼接SQL

简介: apply 拼接SQL本章节将介绍 apply 方法,该方法用来拼接 SQL 语句。它可用于动态的给数据库函数传入参,例如:

apply 拼接SQL


本章节将介绍 apply 方法,该方法用来拼接 SQL 语句。它可用于动态的给数据库函数传入参,例如:

apply("date_format(dateColumn,'%Y-%m-%d') = {0}", "2020-10-08")

上面 apply 函数将使用后面的“2020-10-08”参数替换第一个参数中的 {0}。因此,替换后的 SQL 语句如下:


date_format(dateColumn,’%Y-%m-%d’) = ‘2020-10-08’")

像上面这样做,可以避免 SQL 注入风险。如果你不想上面这样做,很有可能会导致 SQL 风险。

apply 方法定义

apply(String applySql, Object... params)
apply(boolean condition, String applySql, Object... params)

参数说明:


applySql:要拼接的 SQL 语句,该 SQL 语句中可能会有 {0}、{1}、…、{n} 等字符串,用来替换参数。


params:参数列表,用于替换 applySql SQL 语句中的 {0}、{1}、…、{n} 等


condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。


实例:使用 apply 方法拼接 SQL 语句,如下:


// 拼接:id = 100
apply("id = 100");
// 拼接:date_format(dateColumn,'%Y-%m-%d') = '2018-08-08'")
apply("date_format(dateColumn,'%Y-%m-%d') = '2018-08-08'")
// 拼接:date_format(dateColumn,'%Y-%m-%d') = '2018-08-08'")
apply("date_format(dateColumn,'%Y-%m-%d') = {0}", "2018-08-08")

示例代码

package com.hxstrive.mybatis_plus.simple_mapper.condition;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hxstrive.mybatis_plus.mapper.SimpleMapper;
import com.hxstrive.mybatis_plus.model.UserBean;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
class Condition15Test {
    @Autowired
    private SimpleMapper simpleMapper;
    @Test
    void contextLoads() {
        QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
        wrapper.apply("date_format(borthday,'%Y-%m-%d') = {0}", "1990-10-01");
        List<UserBean> userBeanList = simpleMapper.selectList(wrapper);
        System.out.println("result size=" + userBeanList.size());
    }
}

运行上面代码,将执行如下 SQL 语句:


Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (date_format(borthday,'%Y-%m-%d') = ?)
Parameters: 1990-10-01(String)


目录
相关文章
|
4天前
|
SQL Java 测试技术
3、Mybatis-Plus 自定义sql语句
这篇文章介绍了如何在Mybatis-Plus框架中使用自定义SQL语句进行数据库操作。内容包括文档结构、编写mapper文件、mapper.xml文件的解释说明、在mapper接口中定义方法、在mapper.xml文件中实现接口方法的SQL语句,以及如何在单元测试中测试自定义的SQL语句,并展示了测试结果。
3、Mybatis-Plus 自定义sql语句
|
1天前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
23天前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
38 3
|
1月前
|
SQL Java 数据库连接
mybatis动态SQL常用语法总结
MyBatis 使用 OGNL 表达式语言处理动态SQL,如 `if` 标签进行条件判断,`choose`、`when`、`otherwise` 实现多条件选择,`where`、`set` 管理SQL关键字,`trim` 提供通用修剪功能,`foreach` 遍历集合数据。`sql` 和 `include` 用于代码重用,`selectKey` 处理插入后的返回值。参数传递支持匿名、具名、列表、Map、Java Bean和JSON方式。注意SQL转义及使用合适的jdbcType映射Java类型。
50 7
|
2月前
|
SQL Java 数据库连接
深入探索MyBatis Dynamic SQL:发展、原理与应用
深入探索MyBatis Dynamic SQL:发展、原理与应用
|
2月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
|
2月前
|
SQL Java 数据库连接
MyBatis动态SQL
MyBatis动态SQL
35 0
|
2月前
|
SQL Java 数据库连接
Mybatis日志SQL解析
Mybatis日志SQL解析
31 0
|
27天前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
45 13