-
1.业务背景 -
2.实体类 -
3.自定义Mapper和xml文件 -
4.Service层 -
5.Controller层
1.业务背景
业务场景中,一个会话中存在多个场景,即一个session_id
对应多个scene_id
和scene_name。另外,搜索公众号顶级科技后台回复“API接口”,获取一份惊喜礼包。
如果你写成如下的聚合模型类
public class SceneVO { private String sessionId; private String sceneId; private String sceneName; // 省略对应的getter和setter方法}
返回的List
形式如下,这个数据在data属性中
{ "data":[ { "sessionId": "jksadhjksd", "sceneId":"NDJWKSDSJKDKED", "sceneName":"场景1" }, { "sessionId": "jksadhjksd", "sceneId":"KLJSDJKLSDFALK", "sceneName":"场景2" }, { "sessionId": "jksadhjksd", "sceneId":"KERFJKOVDJKDSS", "sceneName":"场景3" } ]}
每个对象里面都带上了重复的一个sessionId数据,我想提出来该怎么办?
我想改为如下形式,sessionId提出到外层,更能体现出一个sessionId对应多个sceneId和sceneName的含义,这样也便于前端取数据,不然每个对象都要增加一个sessionId属性,太麻烦。扩展:接私活儿
{ "data": { "sessionId": "jksadhjksd", "sceneList": [ { "sceneId":"NDJWKSDSJKDKED", "sceneName":"场景1" }, { "sceneId":"KLJSDJKLSDFALK", "sceneName":"场景2" }, { "sceneId":"KERFJKOVDJKDSS", "sceneName":"场景3" } ] }}
2.实体类
方法如下,首先创建两个实体类。
public class SceneVO { private String sessionId; private List sceneList; // 省略对应的getter和setter方法}public class SubSceneVO { private String sceneId; private String sceneName; // 省略对应的getter和setter方法}
3.自定义Mapper和xml文件
public interface BusinessScenesCustomMapper { SceneVO selectBySessionId(String sessionId);}<?xml version="1.0" encoding="UTF-8"?>mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">"你的包名.mapper.BusinessScenesCustomMapper"> "BaseResultMap" type="你的包名.vo.SceneVO"> "session_id" jdbcType="VARCHAR" property="sessionId"/> "sceneList" ofType="你的包名.vo.SubSceneVO"> "scene_id" jdbcType="VARCHAR" property="sceneId"/> "scene_name" jdbcType="VARCHAR" property="sceneName"/> "selectBySessionId" parameterType="string" resultMap="BaseResultMap"> select session_id, scene_id, scene_name from 表名 where session_id = #{sessionId,jdbcType=VARCHAR}
-
collection标签: 用于定义关联的List集合类型的封装规则 -
property属性: 对应父类中List集合的变量名,这里SceneVO类里的List变量名为sceneList -
ofType属性: 集合存放的类型,List集合要装的类的类名,这里是SubSceneVO
4.Service层
public interface SceneService { /** * 获取场景信息 */ SceneVO getScenesInfo(String sessionId);}@Servicepublic class SceneServiceImpl { @Resource private BusinessScenesCustomMapper businessScenesCustomMapper; ...... public SceneVO getScenesInfo(String sessionId) { return businessScenesCustomMapper.selectBySessionId(sessionId); }}
5.Controller层
......@Resourceprivate SceneService sceneService;@GetMapping("/getScenesInfo")public ResModel getScenesInfo(String sessionId) { SceneVO sceneVO = sceneService.getScenesInfo(sessionId); return ResModel.ok(sceneVO);}
欢迎大家进行观点的探讨和碰撞,各抒己见。如果你有疑问,也可以找我沟通和交流。
© 版权声明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!邮箱:cxysz1@tom.com
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
THE END
暂无评论内容