综合查询功能
(增加请假、出差、外出综合查询功能:加归来日期,只能查看审核通过的,和请假等综合一起显示,加一列:类型(出差、请假、外出)进行区别;)
今天领导让我写一个综合查询功能,刚接手的时候我有点迷茫,想了好几种错误的思路,但是在老师傅的指导下,我找到了正确的思路,现将正确的思路和错误的思路记录如下。
错误思路
(1)首先我不知道要关联销假这张表,归来日期是需要放在销假这张表中的。
(2)其次我对于如何进行类型的判断比较的迷茫,其实我想到了要向数据库中加一个功能类型的字段,因为这样比较方便一点,但是老师傅提醒道,其实可以在后端写一个枚举,然后判断类型,或者直接使用(0,1,2)来进行功能类型的判断。但是我当时就很迷茫,不知道怎么实现。我想了很久,首先想到的是,是否可以根据申请类型的码值来判断,但是候来我发现其实有些功能并没有申请类型这个字段。
(2)后来我苦思冥想,又想到一个方法,我可以建立一个model里面放入三个功能的List对象,然后service里面协议个查询的方法,service实现类里面需要添加另外三个的service,这样我就可以调用这三个的功能的查询方法,然后在VO里面也封装三个的ListVO对象,这样我就可以在controller里面分别将这三个功能的查询结果塞进去,在塞的同时我也可以添加功能名称。当时我想到这个功能的时候,心想简直完美,而且也很简单,但是候来老师傅告诉我这样就无法分页了,因为不知道用什么字段来进行分页。
教训
(1)在做一个功能前,我需要搞清楚这个功能需要关联哪几张表。
(2)分页也是需要根据那个字段来进行分页的。下面附上分页代码
public PageInfo<GuestInformationModel> selectGuestById(SearchCondition searchCondition, String pkId) {
PageHelper.startPage(searchCondition.getCurrPage(), searchCondition.getPageSize());
List<GuestInformationModel> list = this.selectList("selectGuestById", pkId);
PageInfo<GuestInformationModel> page = new PageInfo<>(list);
return page;
}
正确思路
我在三个功能点的数据库中加入了type这个字段,然后在功能插入的时候都对type这个字段进行了插入。
model里面需要封装三个功能的公有字段,service里面只需要加一个查询的方法,service实现类里面也就需要加一个selectCompreInquiryByPage方法就可以了,里面本来就放入了分页的方法。再次就是mapper中的代码了,我用到的形式是
select * from a where id = 100 //根据APPLY_STATUS进行判断是否查询出这条数据
(同时每一个功能中的数据都需要关联两张表来查处内容)
union all
select * from b where id = 100
union all
select * from c where id = 100
这种类型的,这样查出来的结果就是一行一行的一个结果。这样我们在controller里面就只需要用vo进行接收就可以了。同时也可以取出type的类型进行判断,然后对typename进行赋值,通过vo返回给前端就可以了。
结语
这个还只是我今天的思路,具体的还没有实现,等明天我完成了代码的编写,我再写一篇博客,将代码附上去。