mybatis-plus自定义mapper,集成wrapper参数

前言

我之前写动态sql 一直是手撸xml,拼接sql啥的,最近学习了mybatis-plus觉得里边的方法参数Wrapper函数式编程,一直在研究怎么自己写的xml文件能用上wrapper参数然后开始翻找源码,终于发现官方早给了教程,如下。

    /**
     * 获取自定义SQL 简化自定义XML复杂情况
     * <p>
     * 使用方法: `select xxx from table` + ${ew.customSqlSegment}
     * <p>
     * 注意事项:
     * 1. 逻辑删除需要自己拼接条件 (之前自定义也同样)
     * 2. 不支持wrapper中附带实体的情况 (wrapper自带实体会更麻烦)
     * 3. 用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!)
     * 4. ew是wrapper定义别名,不能使用其他的替换
     */
    public String getCustomSqlSegment() {
        MergeSegments expression = getExpression();
        if (Objects.nonNull(expression)) {
            NormalSegmentList normal = expression.getNormal();
            String sqlSegment = getSqlSegment();
            if (StringUtils.isNotBlank(sqlSegment)) {
                if (normal.isEmpty()) {
                    return sqlSegment;
                } else {
                    return Constants.WHERE + StringPool.SPACE + sqlSegment;
                }
            }
        }
        return StringPool.EMPTY;
    }

教程

  • 自定义mapper.xml文件,手撸sql按照官方要求拼接${ew.customSqlSegment},官方给出的解释:(不需要where标签包裹,切记!)
<select id="selectTableList" resultMap="BaseResultMap">
        select goods_id from table ${ew.customSqlSegment}
</select>
  • 绑定java接口文件,mapper.java,我们按照官方给的要求写接口:@Param(Constants.WRAPPER)=ew是wrapper定义别名,不能使用其他的替换
List<Table> selectTableList(@Param(Constants.WRAPPER) Wrapper<Table> wrapper);
  • 直接调用这个接口,就可以了,查询条件会自动拼接
List<Table> goodsList = goodsService.selectTableList(Wrappers.<Table>lambdaQuery()
				.eq(Table::getId, '1610815700807454721')
			);
  • 查看sql执行日志
select goods_id from table where id='1610815700807454721'
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平平常常一般牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值