基于grpc从零开始搭建一个准生产分布式应用(11) - 专题-查询分页

网友投稿 520 2022-10-29

基于grpc从零开始搭建一个准生产分布式应用(11) - 专题-查询分页

基于grpc从零开始搭建一个准生产分布式应用(11) - 专题-查询分页

基于本框架中的封装实现的分页逻辑,用一个例子来说明,为了简单整体结构分为三层(controller、service、dao),省略掉了grpc。以下注释中有******的是和业务相关的写法,需自定义。

一、Controller

@Slf4j@RestController@RequestMapping("/datadbase")public class DatabaseController { @Autowired private IDatabaseService iDatabaseService; /**分页查询数据库: 参数:@RequestBody(required = false) PageParamReq page 中的required可省略,省略后默认为必填项 */ @PostMapping("/v1/page") public PageResponse> page(@RequestBody(required = false) PageParamReq page, @RequestParam(name = "name", required = false) String name, @RequestParam(name = "type", required = false) String type, @RequestParam(name = "status", required = false) String status) { //CommonVoTranslator和DatabaseVoTranslator是用MapStruct实现的实体转换类,固定写法 PageBo pageBo = iDatabaseService.pageSearch(CommonVoTranslator.INSTANCE.pageReq2PageQueryBo(page), name, type, status); //********转换Bo结果数据为Vo,需自定义转换类******** List databaseVos = DatabaseVoTranslator.INSTANCE.boToVos(pageBo.getData()); //定义HTTP响应对象并,封装返回数据,固定写法 PageResponse> response = PageUtil.convertPageBo(pageBo); response.setData(databaseVos); //返回给页面端 return response; }

public interface DatabaseVoTranslator { DatabaseVoTranslator INSTANCE = Mappers.getMapper(DatabaseVoTranslator.class); DatabaseVo boToVo(DatabaseBo var1); List boToVos(List var1);}

二、Service

public PageBo pageSearch(PageQueryBo pageParam, String dataBaseName, String dataBaseType, String status) { Integer dataBaseTypeV = null; Integer statusV = null; if(StrUtil.isNotEmpty(dataBaseType)){ dataBaseTypeV = DataServerStructMapperUtil.getDataBaseType(dataBaseType); } if(StrUtil.isNotEmpty(status)){ statusV = DataServerStructMapperUtil.getStatus(status); } //构建查询参数,固定写法 IPage iPage = new Page<>(pageParam.getPageNum(), pageParam.getPageSize()); //********查询数据******** iPage = iDatabaseDao.pageDatabase(iPage, dataBaseName, dataBaseTypeV, statusV); //处理返回结果,固定写法 PageBo reuslt = PageUtil.convertMyabtisIpage(iPage); //********转换Bo结果数据为Vo,需自定义转换类******** List databaseBos = DatabaseTranslator.INSTANCE.entityToBos(iPage.getRecords()); reuslt.setData(databaseBos); return reuslt; }

public interface DatabaseTranslator { DatabaseTranslator INSTANCE = Mappers.getMapper(DatabaseTranslator.class); DatabaseBo entityToBo(DatabaseEntity var1); List entityToBos(List var1);}

三、Dao

DAO实现中的Mapper为可选,一般没有特殊查询参数时可以直接硬编码的方式实现。

3.1、DAO

public IPage pageDatabase(IPage iPage, String name, Integer type, Integer status) { //********需自定义实现******** IPage result = this.getBaseMapper().pageDatabase(iPage, name, type, status); return result; }

3.2、Mapper

public interface DatabaseMapper extends BaseMapper { IPage pageDatabase(IPage iPage, @Param("databaseName") String name, @Param("type") Integer type, @Param("status") Integer status);}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Google Test 是谷歌出品的一个C++测试框架
下一篇:一个小巧(110B)且快速的实用工具类,用于排序ISO 8601日期字符串
相关文章

 发表评论

暂时没有评论,来抢沙发吧~