• 查询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

    1. - mybatis
    2. ```sql
    3. <select id="selectOrgTreeList" resultType="com.nekosighed.server_jwt.module.pojo.po.SysOrgPO">
    4. SELECT
    5. <include refid="Base_Column_List"/>
    6. FROM sys_org
    7. <trim prefix="WHERE" prefixOverrides="AND|OR" suffixOverrides="AND|OR">
    8. AND (org_pids like CONCAT('%[', #{rootOrgId}, ']%') OR id = #{rootOrgId})
    9. <if test="orgNameLike != null and orgNameLike != ''">
    10. AND org_name like CONCAT('%', #{orgNameLike} ,'%')
    11. </if>
    12. <if test="orgStatus != null">
    13. AND status = #{orgStatus}
    14. </if>
    15. </trim>
    16. ORDER BY `level`, sort
    17. </select>
    • trim 标签

      • prefix 根据内容的有无添加前缀,比如这里后面有内容,则添加 WHERE
      • prefixOverrides 自动清除前缀
      • suffixoverrides 自动清除后缀
      • suffix 根据内容的有无添加后缀
        • mybatis plus
          1. List<SysOrgPO> sysOrgPOS = sysOrgPOMapper.selectList(new QueryWrapper<SysOrgPO>()
          2. // where 条件带括号(会去除 and)
          3. .and(wrapper -> {
          4. wrapper.like("org_pids", String.format("[%d]", rootId)).or().eq("id", rootId);
          5. })
          6. .and(!StringUtils.isEmpty(orgName), wrapper -> {
          7. wrapper.like("org_name", orgName);
          8. })
          9. .and(Objects.nonNull(orgStatus), wrapper -> {
          10. wrapper.eq("status", orgStatus);
          11. })
          12. .orderByAsc( "level", "sort")
          13. );
    • 需要手动带括号时,可以使用带 condition 参数和 lambda 表达式的语句

      • 会自动去除 and or 等字段