文章目录

  • 效果演示
  • 准备工作
    • 表结构
    • 实体类
    • 用于返回数据给前端的Vo部分
  • 控制器层部分
  • 业务层实现方法

效果演示

  • 将目的地和对应的攻略分类显示出来

准备工作

表结构

实体类

  • 攻略分类实体
  • 目的地实体

用于返回数据给前端的Vo部分

@Setter
@Getter
@ToString
public class CatalogVo {private String destName;private List<StrategyCatalog> catalogList = new ArrayList<>();
}

控制器层部分

  • 注入攻略分类的业务层
 @Autowiredprivate IStrategyCatalogService strategyCatalogService;
  • 共享此数据,即给前端显示出列表的所有数据

业务层实现方法

  • 主要的逻辑是sql语句用到了聚合函数
  • 将目的地,和对应的所有攻略分类名和攻略分类id查询出来
  • 通过mabatisPlus中的listMaps方法, 将sql语句中的数据封装进List<Map<String, Object>> list 中,然后将这些数据遍历出来,放进vo对象中,给到前端页面即可
  • 因为查询出的数据ids和names 都是字符串有,,所以另外设一个方法parseCatalog,将这2个参数放入,把值放进List中返回出来(也就是vo中的攻略分类集合)
 @Overridepublic List<CatalogVo> queryGroupCatalog() {List<CatalogVo> vos = new ArrayList<>();
//        查询数据QueryWrapper<StrategyCatalog> wrapper = new QueryWrapper<>();wrapper.select("dest_name,GROUP_CONCAT(name) names,GROUP_CONCAT(id) ids").groupBy("dest_name");List<Map<String, Object>> list = super.listMaps(wrapper);
//        dest_name names ids ----> vofor (Map<String,Object> map:list){CatalogVo vo = new CatalogVo();//            存目的地vo.setDestName(map.get("dest_name").toString());//目的地名字String names = map.get("names").toString();String ids = map.get("ids").toString();
//            存攻略分类集合List<StrategyCatalog> catalogList = this.parseCatalog(names,ids);vo.setCatalogList(catalogList);vos.add(vo);}return vos;}private List<StrategyCatalog> parseCatalog(String names, String ids) {List<StrategyCatalog> list = new ArrayList<>();String[] ns = names.split(",");String[] is = ids.split(",");if (ns.length > 0){for (int i=0;i<ns.length;i++){String name = ns[i];String id = is[i];if (!StringUtils.hasLength(name)){continue;}StrategyCatalog catalog = new StrategyCatalog();catalog.setName(name);catalog.setId(Long.parseLong(id));list.add(catalog);}}return list;}

如何使用myabtisPlust将查询出的数据封装给vo对象相关推荐

  1. 查询出某个表依赖于某个表的外键,进行遍历删除操作

    查询出表名(可以模糊查询) select * from user_tables where table_name like '%表名%' or table_name like '%表名%'; 查询出某 ...

  2. Oracle教程之查询出每个雇员姓名的长度范例

    ocp认证范例:将每一个雇员姓名的开头首字母大写 SELECT INITCAP(ename) FROM emp; 范例:查询出每个雇员姓名的长度 SELECT ename,LENGTH(ename) ...

  3. SQL语句正常,在Navicat中运行正常,但是在后台运行,无法查询出数据,也不报错...

    可能原因一 使用了不等于符号"<>" 实例: // 无法查询出数据 MENU.I_SELECTED <> 1 // 可以查询出数据 AND ( MENU.I ...

  4. 查询出的数据记录字段要与实体类中的属性名一致

    查询出的数据记录字段要与实体类中的属性名一致 转载于:https://www.cnblogs.com/1020182600HENG/p/6183031.html

  5. Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表

    -- 创建临时表 create global temporary table tem_1 (pk_tem char); -- 创建常规表 create table not_tem_1 (pk_not_ ...

  6. SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示

    通过 dba_users 表可以查询出所有的数据库用户,我下面筛选了所有 HR 开头的数据库用户,要把他们都删掉. select username from dba_users where usern ...

  7. Dbvis数据库连接工具将查询出数据转化为sql插入语句方法

    我用的是 dbvis 工具,查询出的数据,Ctrl+A 选择所有字段. 然后进行导出操作. 选择 sql 格式. 选择要导出的字段. 然后就生成 sql 语句了,我们把它复制出来就行了. 效果图如下: ...

  8. mysql 分组top_MySQL:如何查询出每个分组中的 top n 条记录?

    问题描述 需求: 查询出每月 order_amount(订单金额) 排行前3的记录. 例如对于2019-02,查询结果中就应该是这3条: 解决方法 MySQL 5.7 和 MySQL 8.0 有不同的 ...

  9. 用java查询excel表格_如何把java查询出的内容导入到excel表格

    展开全部 java查询出的内容导入到excel表格 /**导出数据为XLS格式 * @param fos * @param bo */ public void writeExcelBo(FileOut ...

  10. 案例:用一条 SQL 语句查询出每门课都大于 80 分的学生姓名

    用一条sql语句查询出每门课都大于80分的学生姓名 首先需要进行分析: 要查询出每门课程都大于80分的学生姓名,因为一个学生有多门课程,所以会出现下面三种情况. 第一可能所有课程都大于80分. 第二可 ...

最新文章

  1. vuex实践之路——笔记本应用(三)
  2. python3 获取file大小_Python 3.x 连接数据库(pymysql 方式),程序员必备知识点
  3. ipad分屏_iPad如何分屏及常见问题
  4. c#geckofx文件流下载
  5. MYSQL数据库索引设计的原则
  6. 使用jenkins进行项目的自动构建部署
  7. ElasticSearch聚合分析
  8. 冯·卡门:用数学武装工程科学
  9. 关于 m_pszAppName
  10. 停止犯下这5个JavaScript风格错误
  11. python课程设计的主要任务是什么_Python网络编程课程设计 任务1.docx
  12. 弱电箱只埋了一根网线时,如何上网和IPTV兼顾?
  13. 从APNIC获取中国IP地址列表
  14. c++实验3-个人所得税计算器
  15. memcmp比较结构体
  16. 透过分布地图,看我中华大地!
  17. win7下用VS编译SBA(摄影测量光束法平差程序库)
  18. Oracle--“ORA-28007: the password cannot be reused”解决
  19. 酷Q插件_SDK———入门与使用
  20. python 安装module

热门文章

  1. GDSOI 2016 T2 星际穿越
  2. 13异步多线程(三)Parallel,线程安全
  3. Cisco Vlan trunk
  4. 关于局域网的一点个人理解及如何建立一个局域网的步骤
  5. Linux学习之计划任务(at、batch、crontab)篇
  6. maven出现Process terminated
  7. ios 发光字体文字的实现
  8. win10+GeForce 940mx安装cuda
  9. javascript 压缩_14种用于压缩JavaScript的工具
  10. 小文件治理之hive文件合并:hive小文件合并的三种方法