1.业务需求:
业务为 个人重大事项报告 和 单位重大事项报告 两种。业务类似于:发起办公流程-》部门领导审核-》报备给单位领导。流程发起时,两种流程时分开发起的,所以设计时设计了两张表来记录两种业务。流程发起、审核、报备,设计的是完全独立的。后来由于甲方的脑残需求,要求在单位领导查看报备报备信息时,两张业务合并在一个列表里,并且要按时间排序,要有分页。
2.解决思路:
自定义sql,利用union 将两张业务表的公共字段 合并成一个虚拟表

     (SELECTgaform_lpt_30.file_id file_id,gaform_lpt_30.unit unit,gaform_lpt_30.`name` `name`,gaform_lpt_30.gettime time FROM`gaform_lpt_30` WHEREallagree = 1 ) UNION ALL(SELECTgaform_lpt_29.file_id file_id,gaform_lpt_29.report_unit unit,gaform_lpt_29.`report_name` `name`,gaform_lpt_29.gettime time FROM`gaform_lpt_29` WHEREallagree = 1 )

然后在上面union结果的外层套上排序

SELECT*
FROM((SELECTgaform_lpt_30.file_id file_id,gaform_lpt_30.unit unit,gaform_lpt_30.`name` `name`,gaform_lpt_30.gettime time FROM`gaform_lpt_30` WHEREallagree = 1 ) UNION ALL(SELECTgaform_lpt_29.file_id file_id,gaform_lpt_29.report_unit unit,gaform_lpt_29.`report_name` `name`,gaform_lpt_29.gettime time FROM`gaform_lpt_29` WHEREallagree = 1 ) ) AS t #此处一定注意,union后务必派生声明虚拟表,不然会出现报错
ORDER BYtime DESC #time是派生的虚拟表的字段

这时 排序和两表合并就完成了。分页利用mybatis框架,只要给dao层方法传IPage就可以了

以下是java代码:
controller层

@ApiOperation("报备列表-29+30共用")@PostMapping("selectBblist")public ServiceResult selectBblist(@RequestParam Integer page,@RequestParam Integer pageCount) {IPage<Lpt2930BaobeiVO> page2=  gaformLpt29Service.selectBb(page,pageCount);return success(page2);}

service层

  @Overridepublic IPage<Lpt2930BaobeiVO> selectBb(Integer page, Integer pageCount) {return gaformLpt29Dao.selectBb( new Page<>(page, pageCount));}

dao层

  @Select("SELECT\n" +"\t*\n" +"FROM\n" +"\t(\n" +"\t\t( SELECT  gaform_lpt_30.file_id file_id, gaform_lpt_30.unit unit, gaform_lpt_30.`name` `name`, gaform_lpt_30.gettime time ,gaform_lpt_30.event_id event_id FROM `gaform_lpt_30` WHERE allagree = 1 ) \n" +"\t\tUNION ALL\n" +"\t\t( SELECT gaform_lpt_29.file_id file_id, gaform_lpt_29.report_unit unit, gaform_lpt_29.`report_name` `name`, gaform_lpt_29.gettime time,gaform_lpt_29.event_id event_id FROM `gaform_lpt_29` WHERE allagree = 1 ) \n" +"\n" +")  as t ORDER BY time DESC")IPage<Lpt2930BaobeiVO> selectBb(IPage page);//此处传入page 插件会自动实现分页

接收数据的vo

@Data
public class Lpt2930BaobeiVO {public String fileId;public String unit;public String name;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")public Date time;public String eventId;}

mybatis-plus mysql 自定义sql,union两张表实现提取公共字段并分页、排序相关推荐

  1. mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?

    在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...

  2. dropdownlist三级联动怎么实现_一张表实现三级联动

    今天是七夕,七夕快乐,大家今天有没有人约呢? 相信大部分的Access玩家都是玩Excel的高手,很多的功能在Excel中实现对大家来说都是小菜,比如今天要讲的联动. 那么,我们现在就来讲一下在Acc ...

  3. 子窗体中组合框联动_一张表实现组合框联动

    嗨,大家中午好! 最近,有网友给我私信,想要一个联动的示例,一个有关于部门联动的操作. 其实关于联动的操作有很多,可以是组合框的联动,列表框联动,组合框与列表框也可以联动,哪怕是放到子窗体中也是可以联 ...

  4. SQL连接两张相同或不同的表,使用 UNION 和 UNION ALL 操作符

    SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...

  5. sql查询两张表的并集union和union all

    使用 union all 和 union 1.新建两张表:student.teacher //学生表 create table student( id int primary key, name va ...

  6. 计算机sql查询同行并集,sql查询两张表的并集union和union all

    使用 union all 和 union 1.新建两张表:student.teacher //学生表 create table student( id int primary key, name va ...

  7. SQL 将两张包含相同字段和不同字段的表数据合并成一张表

    此为SQL案例:将两张具备相同字段,有一部分字段不相同的两张表获取查询结果为整合之后的. 两张表 table1 table2 我想要将两者的数据进行合并达到如下的效果: 这里限制条件有两个分别是dat ...

  8. Mybatis之执行自定义SQL举例

    本文说明如何使用Mybatis执行我自定义输入的SQL语句. 需要的mybaits文件包括:配置文件(mybatis-config-dao.xml 和 jdbc.properties).接口文件(IS ...

  9. mybatis直接使用自定义sql查询数据

    2019独角兽企业重金招聘Python工程师标准>>> dao层,增加SqlMapper.java和 对应的SQLMapper.xml package rg.contacts.map ...

  10. mysql 怎么同时删除两张表的数据库,mysql怎样删除多个表格数据库数据_数据库

    mysql删除多个表格数据库数据的要领:在两个表之间竖立级联删除关联,完成删除一个表的数据时,同时删除另一个表中相干的数据,语句为[delete t1,t2 from t1,t2 where 前提]. ...

最新文章

  1. C++标准库:使用std_list作为链表
  2. 原子变量、volatile、synchronized的可见性和原子性比较
  3. 【深度学习】一位算法工程师从30+场秋招面试中总结出的超强面经——目标检测篇(含答案)...
  4. 城市遥感动态监测管理系统
  5. 19级:班级日常分享,一天一瞬间
  6. Java Syncrhonisers
  7. 梦中女孩,不知还能不能再见你一面
  8. 蓝桥杯 BASIC-27 基础练习 2n皇后问题
  9. Linux下通过HostName访问主机以及修改HostName方法
  10. centos压缩和解压缩命令之zip
  11. MATLAB 程序暂停的方法
  12. java sorted 方法_Stream系列(四)Sorted方法使用
  13. java TIF 转 JPG
  14. 2021年茶艺师(初级)考试资料及茶艺师(初级)模拟试题
  15. MLIR再深入 —— CodeGen 总结
  16. android解析包时出现问题怎么解决方法,安装APK软件时发生“解析包时出现错误”的9大解决方法...
  17. CommonAPI使用例子-HelloWorld
  18. android u盘 uuid,Android4.4KitKat支持u盘功能
  19. MPI求解Jacobi迭代的并行策略
  20. python 将json字符串格式数据格式化保存到本地文件

热门文章

  1. 操作系统 硬中断和软中断
  2. 记一道动态规划算法题:0-1背包之两个背包问题
  3. 网易2017春招笔试 双核处理 01背包
  4. 《Linux基本指令》-新手入门必备
  5. 绿通科技深交所上市:年营收15亿市值93亿 超募19亿
  6. 小学生使用计算机室电脑的制度,小学微机室管理制度
  7. 蓝牙耳机哪个品牌性价比高?性价比高的无线蓝牙耳机
  8. 联通软件研究院 软件开发校招一面面经
  9. 机器学习的技术秘密-走进Imperva的“魔法秘籍”
  10. 华为Mate60对比P60哪个好 华为Mate60和华为P60区别