如何使用myabtisPlust将查询出的数据封装给vo对象
文章目录
- 效果演示
- 准备工作
- 表结构
- 实体类
- 用于返回数据给前端的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对象相关推荐
- 查询出某个表依赖于某个表的外键,进行遍历删除操作
查询出表名(可以模糊查询) select * from user_tables where table_name like '%表名%' or table_name like '%表名%'; 查询出某 ...
- Oracle教程之查询出每个雇员姓名的长度范例
ocp认证范例:将每一个雇员姓名的开头首字母大写 SELECT INITCAP(ename) FROM emp; 范例:查询出每个雇员姓名的长度 SELECT ename,LENGTH(ename) ...
- SQL语句正常,在Navicat中运行正常,但是在后台运行,无法查询出数据,也不报错...
可能原因一 使用了不等于符号"<>" 实例: // 无法查询出数据 MENU.I_SELECTED <> 1 // 可以查询出数据 AND ( MENU.I ...
- 查询出的数据记录字段要与实体类中的属性名一致
查询出的数据记录字段要与实体类中的属性名一致 转载于:https://www.cnblogs.com/1020182600HENG/p/6183031.html
- Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
-- 创建临时表 create global temporary table tem_1 (pk_tem char); -- 创建常规表 create table not_tem_1 (pk_not_ ...
- SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示
通过 dba_users 表可以查询出所有的数据库用户,我下面筛选了所有 HR 开头的数据库用户,要把他们都删掉. select username from dba_users where usern ...
- Dbvis数据库连接工具将查询出数据转化为sql插入语句方法
我用的是 dbvis 工具,查询出的数据,Ctrl+A 选择所有字段. 然后进行导出操作. 选择 sql 格式. 选择要导出的字段. 然后就生成 sql 语句了,我们把它复制出来就行了. 效果图如下: ...
- mysql 分组top_MySQL:如何查询出每个分组中的 top n 条记录?
问题描述 需求: 查询出每月 order_amount(订单金额) 排行前3的记录. 例如对于2019-02,查询结果中就应该是这3条: 解决方法 MySQL 5.7 和 MySQL 8.0 有不同的 ...
- 用java查询excel表格_如何把java查询出的内容导入到excel表格
展开全部 java查询出的内容导入到excel表格 /**导出数据为XLS格式 * @param fos * @param bo */ public void writeExcelBo(FileOut ...
- 案例:用一条 SQL 语句查询出每门课都大于 80 分的学生姓名
用一条sql语句查询出每门课都大于80分的学生姓名 首先需要进行分析: 要查询出每门课程都大于80分的学生姓名,因为一个学生有多门课程,所以会出现下面三种情况. 第一可能所有课程都大于80分. 第二可 ...
最新文章
- vuex实践之路——笔记本应用(三)
- python3 获取file大小_Python 3.x 连接数据库(pymysql 方式),程序员必备知识点
- ipad分屏_iPad如何分屏及常见问题
- c#geckofx文件流下载
- MYSQL数据库索引设计的原则
- 使用jenkins进行项目的自动构建部署
- ElasticSearch聚合分析
- 冯·卡门:用数学武装工程科学
- 关于 m_pszAppName
- 停止犯下这5个JavaScript风格错误
- python课程设计的主要任务是什么_Python网络编程课程设计 任务1.docx
- 弱电箱只埋了一根网线时,如何上网和IPTV兼顾?
- 从APNIC获取中国IP地址列表
- c++实验3-个人所得税计算器
- memcmp比较结构体
- 透过分布地图,看我中华大地!
- win7下用VS编译SBA(摄影测量光束法平差程序库)
- Oracle--“ORA-28007: the password cannot be reused”解决
- 酷Q插件_SDK———入门与使用
- python 安装module