Mybatisplus 传参参数为自定义sql, 使用条件构造器作为参数

本文介绍了在MyBatis-Plus框架中如何使用QueryWrapper进行数据库查询,包括无参和有参查询,并展示了不同版本下SQL语句的生成
摘要由CSDN通过智能技术生成

1 pom依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
</dependency>

2 mapper 接口文件

    List<TBookOrder> searchDiy(@Param(Constants.WRAPPER) Wrapper<TBookOrder> queryWrapper);

3 mapper 的xml配置文件

<select id="searchDiy" resultMap="BaseResultMap">
        select
        id, order_id, book_id, user_id, `status`, `count`, bill_time from t_book_order
        ${ew.customSqlSegment}
</select>

4 查询

//无参
QueryWrapper<TBookOrder> queryWrapper_1 = new QueryWrapper<>();
tBookOrderMapper.searchDiy(queryWrapper_1);
System.out.println();
System.out.println();

//有参
LambdaQueryWrapper<TBookOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TBookOrder::getBookId, 2);
queryWrapper.ge(TBookOrder::getUserId, 1002);
List<TBookOrder> tBookOrders = tBookOrderMapper.searchDiy(queryWrapper);

5 测试,生成的两个sql语句如下

select
    id,
    order_id,
    book_id,
    user_id,
    `status`,
    `count`,
    bill_time 
from
    t_book_order;


select
    id,
    order_id,
    book_id,
    user_id,
    `status`,
    `count`,
    bill_time 
from
    t_book_order 
WHERE
    (
        book_id = 2 
        AND user_id >= 1002
    );

注意:不同的版本,可能会有部分区别,总之注意下版本

Mybatisplus 自定义sql 使用条件构造器可以在自定义 SQL 语句中使用 Mybatisplus 的条件构造器,方便快捷地构造查询条件使用步骤: 1. 在 Mapper 接口中定义自定义 SQL 语句的方法方法返回值为 List 或者其他需要返回的结果类型。 2. 在自定义 SQL 语句中使用 ${} 占位符来引用条件构造器生成的 SQL 片段。 3. 在方法参数使用 @Param 注解来指定条件构造器生成的 SQL 片段的参数名称和类型,同时在自定义 SQL 语句中使用 #{参数名} 占位符来引用参数。 4. 在方法使用 QueryWrapper 类来构造查询条件,然后将 QueryWrapper 对象作为参数传递给自定义 SQL 语句方法即可。 示例代码如下: ``` @Mapper public interface UserMapper extends BaseMapper<User> { @Select("SELECT * FROM user ${ew.customSqlSegment}") List<User> selectByCustomSql(@Param(Constants.WRAPPER) QueryWrapper<User> wrapper); } ``` 其中,${ew.customSqlSegment} 是 Mybatisplus 条件构造器生成的 SQL 片段,@Param(Constants.WRAPPER) 指定了 wrapper 参数的名称和类型。 调用示例: ``` QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq("age", 18).like("name", "张"); List<User> userList = userMapper.selectByCustomSql(wrapper); ``` 以上代码中,使用 QueryWrapper 构造了查询条件,然后将 QueryWrapper 对象作为参数传递给 selectByCustomSql 方法,该方法会根据传入的 QueryWrapper 对象生成自定义 SQL 语句,并返回符合条件的用户列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值