宁波网站建设团队排名,wordpress登录400错误,互联网保险平台排名,秦皇岛网站建设哪家好文章目录 1.业务背景每个对象里面都带上了重复的一个sessionId数据#xff0c;我想提出来该怎么办#xff1f; 2.实体类3.自定义Mapper和xml文件4.Service层5.Controller层 1.业务背景
业务场景中#xff0c;一个会话中存在多个场景#xff0c;即一个session_id对应多个sc… 文章目录 1.业务背景每个对象里面都带上了重复的一个sessionId数据我想提出来该怎么办 2.实体类3.自定义Mapper和xml文件4.Service层5.Controller层 1.业务背景
业务场景中一个会话中存在多个场景即一个session_id对应多个scene_id和scene_name
如果你写成如下的聚合模型类
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 ListSubSceneVO 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 version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespace你的包名.mapper.BusinessScenesCustomMapperresultMap idBaseResultMap type你的包名.vo.SceneVOresult columnsession_id jdbcTypeVARCHAR propertysessionId/!--collection 标签用于定义关联的list集合类型的封装规则property对应父类中list属性名这里SceneVO类里的List变量名为sceneListofType集合存放的类型List集合要装的类的类名这里是SubSceneVO--collection propertysceneList ofType你的包名.vo.SubSceneVOresult columnscene_id jdbcTypeVARCHAR propertysceneId/result columnscene_name jdbcTypeVARCHAR propertysceneName//collection/resultMap!-- 一个session_id对应多条记录返回的是SceneVO对象SceneVO对象有一个List装着SubSceneVO --select idselectBySessionId parameterTypestring resultMapBaseResultMapselect session_id, scene_id, scene_namefrom 表名where session_id #{sessionId,jdbcTypeVARCHAR}/selectcollection标签 用于定义关联的List集合类型的封装规则property属性 对应父类中List集合的变量名这里SceneVO类里的List变量名为sceneListofType属性 集合存放的类型List集合要装的类的类名这里是SubSceneVO
4.Service层
public interface SceneService {/*** 获取场景信息*/SceneVO getScenesInfo(String sessionId);
}
Service
public class SceneServiceImpl {Resourceprivate BusinessScenesCustomMapper businessScenesCustomMapper;......public SceneVO getScenesInfo(String sessionId) {return businessScenesCustomMapper.selectBySessionId(sessionId);}
}5.Controller层
......
Resource
private SceneService sceneService;GetMapping(/getScenesInfo)
public ResModel getScenesInfo(String sessionId) {SceneVO sceneVO sceneService.getScenesInfo(sessionId);return ResModel.ok(sceneVO);
}