2020-08-24

需求

        最近在项目中遇到一个问题,需要检验一个三级联动关系是否正确。当用户通过Excel模板导入数据时,后台需要校验序列、岗位、级别这个三级联动的关系是否匹配,不匹配的话需要给出提示。

        项目用到的数据库是mysql+tk.mybatis,最初的想法是能否通过一个sql语句来实现查询所有的这三级联动对应关系,比如序列有[a,b],岗位有[c,d,e],其与序列对应的关系是[{a:c},{a:d},{b:e}],级别有[1,2],与岗位对应的关系是[{c:1},{c:2},{d:1},{e:1},{e:2}],我想通过一条sql查询得到结果如下:

图1

实现

折腾了一番最终得以实现:

mapper文件中sql语句:

```

<select id="getSequenceRankRankLevelList" resultMap="sequenceRankRankLevelMap">

  SELECT DISTINCT(sequence),rank,rank_level FROM xxx

    where sequence is not null and rank is not null and rank_level is not null

</select>

<resultMap id="sequenceRankRankLevelMap" type="com.baidu.hcm.ehr.pojo.vo.budget.SequenceRankRankLevelVO">

  <result column="sequence" jdbcType="VARCHAR" property="sequence" />

  <collection property="rankAndRankLevelVOS" ofType="com.baidu.hcm.ehr.pojo.vo.budget.RankAndRankLevelVO">

    <result column="rank" jdbcType="VARCHAR" property="rank" />

    <collection property="rankLevels" ofType="com.baidu.hcm.ehr.pojo.vo.budget.RankLevelAndPriceVO">

      <result column="rank_level" jdbcType="VARCHAR" property="rankLevel" />

</resultMap>

```

对应的mapper类:

```

public interface XXXMapperextends BaseMapper {

    List<SequenceRankRankLevelVO> getSequenceRankRankLevelList();

}

```

对应的vo类:

```

public class SequenceRankRankLevelVO {

    private Stringsequence;

    private List<RankAndRankLevelVO> rankAndRankLevelVOS;

}

public class RankAndRankLevelVO {

    private Stringrank;

   private List<RankLevelAndPriceVO> rankLevels;

}

public class RankLevelAndPriceVO {

    private StringrankLevel;

}

```

service类中的方法如下:

```
@Autowired

private XXXMapper xxxMapper;

public ListsequenceRankRankLevel() {

    List<SequenceRankRankLevelVO> sequenceRankRankLevelList =xxxMapper.getSequenceRankRankLevelList();

}

```
最终在service中调用该方法后会得到三级联动的正确关系

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这是学习颜群老师的mybatis教程[https://www.bilibili.com/video/BV1gs41...
    wangailiu阅读 461评论 0 0
  • 一、注解 (annotations) 列表 @SpringBootApplication: 包含了 @Compon...
    小苏c阅读 427评论 0 0
  • 随记 绿茵场上,小足球队员们进行着激烈的比赛,太阳公公也在天空中看着这场紧张的比赛。 这是由六...
    d2e19afa4621美通阅读 348评论 0 0
  • ThreadLocal提供一个线程(Thread)局部变量,访问到某个变量的每一个线程都拥有自己的局部变量。说白了...
    小小一技术驿站阅读 273评论 0 0
  • --$理论知识$-- --$$、三大范式 第一范式(1NF):字段是原子性的,不可分; 第二范式(2NF):有主键...
    scottyang95阅读 823评论 0 4

友情链接更多精彩内容