Mybatisplus 自定义sql 使用条件构造器
两种方式
注解方式
动态查找:
@Select("select ${ew.SqlSelect} from ${tableName} ${ew.customSqlSegment}")
List<File> listFileByCondition(@Param("tableName") String tableName, @Param("ew") Wrapper wrapper);
ew.SqlSelect:所需要查找的字段
tableName:使用的是那张表
ew.customSqlSegment:条件
用法:allFileMapper.listFileByCondition(tableName,Wrappers.query().select("*").in("relation_uuid", uuids));
结果: select * from tablName where relation_uuid in ()
动态修改:
@Update("update ${tableName} set ${ew.sqlSet} ${ew.customSqlSegment}")
int updateByCondition(@Param("tableName") String tableName, @Param("ew") Wrapper wrapper);
ew.sqlSet:修改的字段
tableName:使用的是那张表
ew.customSqlSegment:条件
用法:
mapper.updateByCondition(tableName, Wrappers.update().set("state", "初始状态").in("id", ids));
结果: update tableName set state = '初始状态' where id in ()
xml方式
查找:
<select id="listFileByCondition" resultType="com.example.entity.File">
SELECT ${ew.SqlSelect} FROM ${tableName} ${ew.customSqlSegment}
</select>
修改:
<update id="listFileByCondition" >
update ${tableName} ${ew.SqlSelect} ${ew.customSqlSegment}
</update>
查找带分页
xml用法:
Page<File> selectPage(Page page, @Param("tableName") String tableName, @Param("ew") Wrapper wrapper);
<select id="selectPage" resultType="com.example.entity.File">
select * from ${tableName} ${ew.customSqlSegment}
</select>
注解分页: