查询sql ```sql
SELECT * FROM sys_org o WHERE (org_pids like ‘%[?]%’ or id = ?) #查询当前节点及其所有子节点 AND org_name like ‘%?%’ #orgNameLike参数不为空或空串才有这个AND条件 AND status = ? #orgStatus参数不为null,才有这个AND条件 ORDER BY level,sort
- mybatis
```sql
<select id="selectOrgTreeList" resultType="com.nekosighed.server_jwt.module.pojo.po.SysOrgPO">
SELECT
<include refid="Base_Column_List"/>
FROM sys_org
<trim prefix="WHERE" prefixOverrides="AND|OR" suffixOverrides="AND|OR">
AND (org_pids like CONCAT('%[', #{rootOrgId}, ']%') OR id = #{rootOrgId})
<if test="orgNameLike != null and orgNameLike != ''">
AND org_name like CONCAT('%', #{orgNameLike} ,'%')
</if>
<if test="orgStatus != null">
AND status = #{orgStatus}
</if>
</trim>
ORDER BY `level`, sort
</select>
trim
标签prefix
根据内容的有无添加前缀,比如这里后面有内容,则添加WHERE
prefixOverrides
自动清除前缀suffixoverrides
自动清除后缀suffix
根据内容的有无添加后缀- mybatis plus
List<SysOrgPO> sysOrgPOS = sysOrgPOMapper.selectList(new QueryWrapper<SysOrgPO>()
// where 条件带括号(会去除 and)
.and(wrapper -> {
wrapper.like("org_pids", String.format("[%d]", rootId)).or().eq("id", rootId);
})
.and(!StringUtils.isEmpty(orgName), wrapper -> {
wrapper.like("org_name", orgName);
})
.and(Objects.nonNull(orgStatus), wrapper -> {
wrapper.eq("status", orgStatus);
})
.orderByAsc( "level", "sort")
);
- mybatis plus
需要手动带括号时,可以使用带
condition
参数和 lambda 表达式的语句- 会自动去除
and
or
等字段
- 会自动去除