查询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根据内容的有无添加前缀,比如这里后面有内容,则添加WHEREprefixOverrides自动清除前缀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 表达式的语句- 会自动去除
andor等字段
- 会自动去除
