QueryWrapper OR 的用法
@Data
public class ReimburseAwardQueryDTO extends PageQuery<ReimburseAwardDomain> {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键id")
private Long id;
@ApiModelProperty("手机号或账号")
private String mobileOrUserName;
@Override
public QueryWrapper<ReimburseAwardDomain> toQueryWrapper() {
QueryWrapper<ReimburseAwardDomain> queryWrapper = new QueryWrapper<>();
//----------------条件开始-------------------
queryWrapper.eq(valid(id),"id",id);
/**或者条件*/
if (valid(mobileOrUserName)) {
queryWrapper.and(q -> q.eq("user_name", mobileOrUserName).or().eq("mobile", mobileOrUserName).or().eq("real_name", mobileOrUserName));
}
//----------------排序倒序-------------------
queryWrapper.orderByDesc("create_time").orderByDesc("id");
super.addOrder(queryWrapper);
return queryWrapper;
}
}
用 queryWrapper.and( )开始, and里面用.or().eq(条件)
相当于以下Mybatis SQL代码
<select id="selectReimburseAwardList" parameterType="com.hq.admin.marketing.dto.ReimburseAwardQueryDTO">
SELECT <include refid="Base_Column_List" />
FROM t_reimburse_award
<where>
id = #{id}
<if test="mobileOrUserName!='' ">
AND (user_name = #{mobileOrUserName} OR mobile = #{mobileOrUserName} OR real_name = #{mobileOrUserName})
</if>
</where>
ORDER BY create_time DESC, id DESC
</select>