后端单字段排序公共方法整合
2024-06-03 15:11:57 0 举报
本公共方法针对于若依框架封装接口改造
作者其他创作
大纲/内容
Service
多表Mybatis
Mapper接口中定义IPage查询方法,在XML文件中编写查询语句
单表MybatisPlus
1、DO类上要加表名注解指定表名@TableName(\"表名\")2、表字段名称与展示名称不一致时,需加@TableField指定表字段名3、实体类需继承BaseDO以获取公共字段
实体类型
IPage selectBinTypeGoodsInvLimitPage(@Param(\"ew\
后端接收到请求
Controller
public PageResult getConfigPage(ConfigPageReqVO pageReqVO) { return configMapper.selectPage(pageReqVO); }
public class ConfigDO extends BaseDO { /** * 参数主键 */ @TableId private Long id; /** * 参数分类 */ @TableField(value = \"tci.type_id\") private String categoryName; private Integer categoryTypeId; private String categoryTypeName; /** * 参数名称 */ private String name; /** * 参数键名 * * 支持多 DB 类型时,无法直接使用 key + @TableField(\"config_key\") 来实现转换,原因是 \"config_key\" AS key 而存在报错 */ private String configKey; /** * 参数键值 */ private String value; /** * 参数类型 * * 枚举 {@link ConfigTypeEnum} */ private Integer type; /** * 是否可见 * * 不可见的参数,一般是敏感参数,前端不可获取 */ @TableField(value=\"visiable\") private Boolean visible; /** * 备注 */ private String remark;\t//排序需定义 @TableField(value = \"ict.create_time\") private LocalDateTime createTime;}
@GetMapping(\"/page\") @Operation(summary = \"获取参数配置分页\") @PreAuthorize(\"@ss.hasPermission('infra:config:query')\") public CommonResultPageResult getConfigPage(@Valid ConfigPageReqVO pageReqVO) { PageResult page = configService.getConfigPage(pageReqVO); return success(ConfigConvert.INSTANCE.convertPage(page)); }
select id=\"selectBinTypeGoodsInvLimitPage\" resultType=\"cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO\
传入请求ReqBean,调用Mapper执行自定义MabatisPlus查询方法
1、通过请求ReqBean声明分页Page类;2、如果请求ReqBean中存在排序字段,执行MyBatisUtils工具类中的validateColumnExists方法验证排序字段是否存在并获取实际排序字段名以及通过setOrderColumnIsAsc方法获取排序类型,之后利用上述俩参数封装OrderItem对象并存入Page对象中;3、传入请求ReqBean与Page对象,执行自定义的MaBatis查询方法,最后获取结果生成PageResult对象
BaseMapperX:
调用Service获取到分页结果集并封装CommonResult
调用封装的selectPagePre方法,入参为:1、请求ReqVO;2、实体DO.class;3、MyBatisPlus查询Lambda表达式;BaseMapperX中的selectPagePre方法通过MyBatisUtils工具类中的validateColumnExists方法验证排序字段是否存在并获取实际排序字段名,最后声明SortingField对象后调用接口中原有的selectPage方法完成排序查询
public class MyBatisUtils { private static final String MYSQL_ESCAPE_CHARACTER = \"`\
Mapper
请求ReqBean
1、DO类定义属性名要与自定义查询结果字段名称一致2、如果需要指定某一字段列排序,需加@TableField注解指定{表别名.表字段名}3、实体类可继承BaseDO以获取公共字段,但如果公共字段需要排序需在DO类中定义,如createTime
实体DO
单字段排序后端查询整合
@Schema(description = \"管理后台 - 参数配置分页 Request VO\")@Data@EqualsAndHashCode(callSuper = true)@ToString(callSuper = true)public class ConfigPageReqVO extends PageParam { @Schema(description = \"数据源名称,模糊匹配\
@TableName(\"infra_config\")@KeySequence(\"infra_config_seq\") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。@Data@EqualsAndHashCode(callSuper = true)@ToString(callSuper = true)public class ConfigDO extends BaseDO { /** * 参数主键 */ @TableId private Long id; /** * 参数分类 */\tprivate String category; /** * 参数名称 */ private String name; /** * 参数键名 * * 支持多 DB 类型时,无法直接使用 key + @TableField(\"config_key\") 来实现转换,原因是 \"config_key\" AS key 而存在报错 */ private String configKey; /** * 参数键值 */ private String value; /** * 参数类型 * * 枚举 {@link ConfigTypeEnum} */ private Integer type; /** * 是否可见 * * 不可见的参数,一般是敏感参数,前端不可获取 */ @TableField(value=\"visiable\") private Boolean visible; /** * 备注 */ private String remark; @TableField(value = \"ict.create_time\") private LocalDateTime createTime;}
MyBatisUtils:
0 条评论
下一页