MyBatisPlus在@Select中使用构造器Wrapper

描述

当自定义@SELECT语句后,直接传wrapper到方法上不行.

解决思路

MybatisPlus官方文档
上有一个方法:

注意事项:
需要mybatis-plus版本 >= 3.0.7 param 参数名要么叫ew,
要么加上注解@Param(Constants.WRAPPER) 使用
${ew.customSqlSegment} 不支持 Wrapper 内的entity生成where语句

用注解

1
2
@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);

用XML

1
List<MysqlData> getAll(Wrapper ew);
1
2
3
4

<select id="getAll" resultType="MysqlData">
SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>

链式调用 lambda 式

1
2
3
4
5
6
7
8
9
10
11
12
13
// 区分:
// 链式调用 普通
UpdateChainWrapper<T> update();
// 链式调用 lambda 式。注意:不支持 Kotlin
LambdaUpdateChainWrapper<T> lambdaUpdate();

// 等价示例:
query().eq("id",value).one();
lambdaQuery().eq(Entity::getId,value).one();

// 等价示例:
update().eq("id",value).remove();
lambdaUpdate().eq(Entity::getId,value).remove();

本文地址: https://github.com/maxzhao-it/blog/post/26362/