mybatis-plus字典回写工具包
字典回写就是将一些字典的实际值通过二次查询的方式在接口中把显示值赋值到对象中,避免多表联查,该工具包是通过拦截ResultSetHandler实现resultset的再次赋值
字典回写
第一步 处理插件配置
1@Bean
2public DictTextResultSetHandlerPlugin dictTextResultSetHandlerPlugin(){
3 return new DictTextResultSetHandlerPlugin();
4}
第二步 在实体类或VO中需要回写的字段上增加注解
1@Getter2@Setter3@Accessors(chain = true)4public class Student {5 private String id;67 private String name;89 @DictText(keyColumn = "id", textColumn = "dict_text", tableName = "sys_dict", target = "sexName")
10 private Integer sex;
11
12 @TableField(exist = false)
13 private String sexName;
14}
通过@DictText注解绑定需要回写的表和字段等属性,在数据查询完成后二次查询将显示值填充到对应字段中,避免频繁的连表查询
需要注意的是字典回写最好在分页接口或数据较少的接口中使用,字典表一定要加索引,否则性能影响较大
@DictText注解介绍
1/**2 * 要查询的关联表的条件字段名3 */4String keyColumn() default "id";56/**7 * 要查询的关联表的回显字段名8 */9String textColumn() default "name";
10
11/**
12 * 实体类中要回写的字段名
13 */
14String target() default "";
15
16/**
17 * 要查询的关联表名称
18 */
19String tableName() default "";
20
21/**
22 * 关联表其他需要的条件字段名
23 */
24String otherColumn() default "dict_id";
25
26/**
27 * 关联表其他需要的条件字段值
28 */
29String otherValue() default "";
30
31/**
32 * 是否为逗号分割 如果设置为true 回写的字典名称同样为逗号分割
33 */
34boolean commaSeparate() default false;
这些属性主要是用来拼接sql,用sql来说明这些字段的意思应该更清楚
1select ${textColumn} from ${tableName} where ${keyColumn} = ${注解的字段的值}
如果有些字典表有dict_id或group_id的字典分组字段,可以用otherColumn和otherValue来查询
1select ${textColumn} from ${tableName} where ${keyColumn} = ${注解的字段的值} and ${otherColumn} = ${otherValue}
如果commaSeparate为true时,代表注解的值为逗号分割字符串,例如1,2,那么回写的结果同样为逗号分割字符串,比如男,女
1select group_concat(${textColumn}) from ${tableName} where ${keyColumn} in (${注解的字段的值})
这种方式同样可以拼接otherColumn = otherValue
当然,目前这种方式可能会导致1,1只返回男,不过感觉应该够用了,先这样吧
mybatis-plus字典回写工具包相关推荐
- Springboot字典回显
说明 在前后端分离开发的场景下,后端经常会需要将状态或者类型这样的数据以阿拉伯数字返回,比如1:生效,2:失效:3:发布中等等:以往我们的做法都是前后端沟通好前端通过数字和中文自己对应并显示.后端如果 ...
- 网吧服务器回写盘用什么型号,网吧服务器回写盘的配置
网吧服务器回写盘的配置 内容精选 换一换 如果您选择使用SFS Turbo实现文件共享存储,此章节可跳过.在双NFS Server的场景下,需要配置NFS Server之间的同步机制,确保NFS Se ...
- 存储引擎 K/V 分离下的index回写问题
前言 近期在做on nvme hash引擎相关的事情,对于非全序的数据集的存储需求,相比于我们传统的LSM或者B-tree的数据结构来说 能够减少很多维护全序上的计算/存储资源.当然我们要保证hash ...
- linux内核页高速缓存,《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写(示例代码)...
主要内容: 缓存简介 页高速缓存 页回写 1. 缓存简介 在编程中,缓存是很常见也很有效的一种提高程序性能的机制. linux内核也不例外,为了提高I/O性能,也引入了缓存机制,即将一部分磁盘上的数据 ...
- linux块设备的IO调度算法和回写机制
************************************************************************************** 參考: <Linux ...
- 深究AngularJS——ng-checked(回写:带真实案例代码)
1.需求 在添加页面实现一个checkbox的选择,然后在详情页面展示时,会自动选上之前被选中的. 2.添加页面 看官最好将这个代码复制过去看看效果. <!DOCTYPE html> &l ...
- ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的
CL_GUI_ALV_GRID_BASE->MT_MODIFIED_CELLS在网格控件中是个非常重要的属性,sap是如何将客户端的编辑数据自动回写到该内表的,这对希望增强网格控件的 ABAPE ...
- ABAP:List中回写CheckBox的值到内表
我们在内表中定义了一个flag字段并以checkbox的方式显示在List上面后,该如何将用户的选项回写到内表中去? 由于可能有Title.Column Heading以及TOP-OF-PAGE事件的 ...
- 《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写
主要内容: 缓存简介 页高速缓存 页回写 1. 缓存简介 在编程中,缓存是很常见也很有效的一种提高程序性能的机制. linux内核也不例外,为了提高I/O性能,也引入了缓存机制,即将一部分磁盘上的数据 ...
最新文章
- 上云实践操作(漫步云端)之上云动力
- Appointment search in Fiori and Webui
- 使用JavaScript将当前页面保存成PDF,支持图片和文字的保存
- HTML5 中的下载简化处理
- 深度学习、图像识别的基本概念
- [bzoj3489]A simple rmq problem_KD-Tree
- 快速配置 Samba
- 继续教育自动听课软件_荣耀小口哨app下载-华为荣耀小口哨软件v1.9.9 安卓最新版 - 极光下载站...
- linux内核关闭igmp,Linux kernel IGMP多个安全漏洞
- python爬取网页内容_Python爬虫原理解析
- 与IP地址有关的那些点
- Java编程:树(实际应用)
- phpcms二次开发摘要
- 数据结构复习-day01-SqList顺序表
- linux机顶盒怎么破解wifi,折腾一下数字电视的机顶盒
- Java转Ruby【快速入门】
- html如何图片转换成word文档格式,怎样把图片转换成word文档格式
- AUC / uAUC
- 其他计算机设备是什么,电脑设备指什么
- vue H5页面制作微信公众号前期准备
热门文章
- 3D 霍尔效应位置传感器原理解析
- 自动控制原理2.2---控制系统的复数域数学模型
- 2018年浙江检察机关办理公益诉讼案件5551件
- 怎么知道自己的计算机成绩,小黑盒如何查看我的电脑 电脑查成绩方法
- 二度云抢先成为首批工信部(.vip/.xyz/.club)域名注册管理机构
- 拼多多砍价显示服务器吃撑了,拼多多砍价网页打不开是为什么
- 电脑安装java显示错误代码1603_win7安装软件弹出“错误 -1603安装时出现致使错误”的修复教程...
- 【转载】C++的就业状况与方案。
- 如何诊断Shopee店铺?记住这3个操作
- 使用python输出所有汉字的拼音hàn-zì-pīn-yīn