当前使用版本(3.5.5)
该问题是如何引起的?(确定最新版也有问题再提!!!)
使用apply导致
重现步骤(如果有就写完整)
service代码
@Override
public TableDataInfo
private Wrapper<SysUserBo> buildTaskUserQueryWrapper(SysUserBo user) {
Map<String, Object> params = user.getParams();
QueryWrapper<SysUserBo> wrapper = Wrappers.query();
wrapper.eq("u.del_flag", UserConstants.USER_NORMAL)
.like(StringUtils.isNotBlank(user.getNickName()), "u.nick_name", user.getNickName())
.eq(StringUtils.isNotBlank(user.getUserType()), "u.user_type", user.getUserType())
.like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
.between(params.get("beginTime") != null && params.get("endTime") != null,
"u.create_time", params.get("beginTime"), params.get("endTime"));
if(user.getProjectIds()!=null){
wrapper.eq("sup.project_id", user.getProjectIds()[0]);
}
if(user.getWorkerIds()!=null) {
wrapper.apply(user.getWorkerIds() != null, "FIND_IN_SET({0}, worker_ids)", user.getWorkerIds()[0]);
}
return wrapper;
}
xml
<select id="selectPageWorkerProjectUserList" resultMap="SysUserResult">
SELECT u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
u.id_card AS idCard, u.address, u.birthday, sup.project_id AS currentProjectId, sup.project_name AS currentProjectName, worker_ids, worker_names
FROM sys_user u LEFT JOIN slm_user_project sup ON sup.user_id = u.user_id AND sup.is_main=1
LEFT JOIN (SELECT user_id, GROUP_CONCAT(worker_name) AS worker_names, GROUP_CONCAT(worker_id) AS worker_ids FROM slm_user_worker GROUP BY user_id) worker ON worker.user_id=u.user_id
${ew.getCustomSqlSegment}
</select>
当只有 user.getWorkerIds()和非条件user.getProjectIds()条件不满足,sql变成了
SELECT COUNT(*) FROM sys_user u where u.del_flag=0 and FIND_IN_SET(123, worker_ids) 当只有 user.getProjectIds()条件满足和其他条件任意组合,sql是正常的 或者没有任务条件触发,sql也是正常的
报错信息
Comment From: miemieYaho
?
Comment From: Conquery
这个图可以看出来加了FIND_IN_SET出问题了
Comment From: miemieYaho
什么问题?
Comment From: Conquery
我已经解决掉了,谢谢哈