通过Lambda表达式获取字段列名,以及需要注意的地方
日常开发用MyBatis Plus的lambda表达式查询,不用手写column列名,不易出错且便于改动,如下:
LambdaQueryWrapper<LanguageIntercept> lambdaQueryWrapper = new LambdaQueryWrapper();
lambdaQueryWrapper.eq(LanguageIntercept::getServiceTableName, tableName);
lambdaQueryWrapper.eq(LanguageIntercept::getDataType, TABLE.getType());
在封装一些通用的代码时,也想通过Lambda的形式获取列名,因此通过MyBatis Plus自身的工具类+Hutool可以完成这个功能,代码如下:
import cn.hutool.core.lang.func.Func1;
import cn.hutool.core.lang.func.LambdaUtil;
import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;import java.util.Map;public class TableInfoUtils {public static <T> String getColumn(Func1<T, ?> func, Class clazz) {//获取实体所有对应的列Map<String, ColumnCache> columnMap = LambdaUtils.getColumnMap(clazz);if (columnMap == null) {return null;}//获取实体属性名称String fieldName = LambdaUtil.getFieldName(func);if (StringUtils.isTrimBlank(fieldName)) {return null;}//通过属性名获取对应的列名String column = columnMap.get(LambdaUtils.formatKey(fieldName)).getColumn();return column;}}
使用代码:
String productIdColumn = TableInfoUtils.getColumn(MPProject::getProductId, MPProject.class);
这样就可以获取到 MPProject 的 productId 属性对应的列名了,但是这里有个问题,这个代码一定要在Mybatis plus 初始化完毕后执行,否则的话,因为table info还没有注册进去,
调用 LambdaUtils.getColumnMap(clazz); 这里返回的就是空,因此我在代码里是继承了 CommandLineRunner 接口,在spring容器完全启动后,再做操作,如下:
@Overridepublic void run(String... args) {String productIdColumn = TableInfoUtils.getColumn(MPProject::getProductId, MPProject.class);if (productIdColumn != null) {handlerMap.put(productIdColumn, this::buildProductName);}}
这里参考了这位仁兄的博客:https://blog.csdn.net/u011974797/article/details/130616631
相关文章:
通过Lambda表达式获取字段列名,以及需要注意的地方
日常开发用MyBatis Plus的lambda表达式查询,不用手写column列名,不易出错且便于改动,如下: LambdaQueryWrapper<LanguageIntercept> lambdaQueryWrapper new LambdaQueryWrapper(); lambdaQueryWrapper.eq(LanguageInterc…...
消息队列的作用与使用场景?
一、消息队列的作用 队列的主要作用是消除高并发访问高峰,加快网站的响应速度。 在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧。 …...
前端常见面试题之ajax、http
文章目录 一、手写ajax请求1. get2. post3. xhr.readyState4. xhr.status5. xhr.open 二、跨域三、cookie、localStorage和sessionStorage四、http1. http常见的状态码有哪些2. http常见的header有哪些3. 什么是RestfulAPI4. 描述一下http的缓存机制5. https 一、手写ajax请求 …...
林江院长:让斜视的孩子改“斜”归正,“正视”未来
读写时跳行、不敢和别人对视、拍照时不敢看镜头......这些不便是不少斜视患儿每天都在经历的日常。 斜视是目前儿童常见的眼科疾病之一,该眼病不仅给孩子的外在形象带来影响,更重要的是会影响双眼视功能及身心健康,其危害不容小觑。 7岁男孩晓…...
windows系统Mysql备份脚本
一.背景 用的windows server 2019服务器,mysql8.0.34,还是应该每天备份一下。以前做了很多次,主要是带了2个徒弟,还是要写出来。 二.备份脚本 chcp 936 set date_tmp%date:~0,10% set datetime%date_tmp:/%%time:~0,2%%time:~3,…...
localStorage、sessionStorage、vuex区别和使用感悟
一、介绍及区别 localStorage的生命周期是永久;不手动在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。 sessionStorage的生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭,那么所有通过sessionStorage存…...
Linux用户提权
新建用户 用root账户修改文件,添加信任用户 使用sudo提权,可以使用 **root删除新建账户**...
ZooKeeper 安装
ZooKeeper 的安装包括单机模式安装,以及集群模式安装。 单机模式较简单,是指只部署一个 zk 进程,客户端直接与该 zk 进程进行通信。在开发测试环境下,通常来说没有较多的物理资源,因此我们常使用单机模式。 当然在单…...
Realm Management Extension领域管理扩展之安全状态
RME基于Arm TrustZone技术。TrustZone技术在Armv6中引入,提供以下两个安全状态: 安全状态(Secure state)非安全状态(Non-secure state)以下图表显示了在AArch64中的这两个安全状态以及通常在每个安全状态中找到的软件组件: 该架构将在安全状态运行的软件与在非安全状态运…...
统计学-R语言-2.2
文章目录 前言导入.RData文件方式1方式2方式3 导入程序包方式一方式二 总结 前言 本篇文章是将上篇得软件安装完,对其部分功能进行介绍。 导入.RData文件 在我们日常练习时会有.RData文件导入,并对其进行分析,下面是两种方导入.RData文件。…...
Windows 项目从0到1的部署
目录 一. 安装jdk 1.1 安装jdk 1.2 配置jdk的环境配置jdk 1.3 配置成功 二. 配置tomcat 2.1 启动tomcat 2.2 防火墙设置 三. 安装MySQL 3.1 安装步骤 3.2 内部连接 3.3 外部连接 四. 部署项目 4.1 项目部署 4.2 修改mysql的用户密码 一. 安装jdk 这里给大家准备好了jdk和…...
基于SSM的戏剧推广网站的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…...
监督学习 - 梯度提升机(Gradient Boosting Machines,GBM)
什么是机器学习 梯度提升机(Gradient Boosting Machines,GBM)是一种集成学习方法,通过将多个弱学习器(通常是决策树)组合成一个强学习器来提高模型的性能。GBM的训练过程是通过迭代,每一步都根…...
Mac M1 Parallels CentOS7.9 Install Jenkins
官网: https://www.jenkins.io/ 一、Install & Check Java Env Oracle官网下载Java: https://www.oracle.com/cn/ # 拷贝到Jenkins服务器 scp Downloads/jdk-11.0.21_linux-aarch64_bin.tar.gz root10.211.55.34:~# 解压 mkdir -p /opt/java && tar -zxvf jdk-11…...
【基于 InternLM 和 LangChain 搭建你的知识库】学习笔记
学习参考文档【基于 InternLM 和 LangChain 搭建你的知识库】 学习参考链接【书生・浦语大模型实战营第三课作业(基础进阶)】 理论 实战 收集原始数据 收集2018年-2020年几年间的优秀数学建模论文 修改脚本文件,测试文件 作业 复现课程知识库助手搭建过程 La…...
Redis面试系列-03
1. 为什么 Redis 集群的最大槽数是 16384 个? 在redis节点发送心跳包时需要把所有的槽放到这个心跳包中,以便让节点知道当前集群信息,即1638416k,在发送心跳包时使用char进行bitmap压缩后是2k(2*8 (8bit)*1024(1k)16K…...
如何结合告警丰富获取拨测失败的原因?
本期最佳实践为您揭秘: 如何使用pongo2模板语言获取指定的字符串内容如何结合告警丰富,过滤出有效的告警信息 「 背 景 」 在此前的最佳实践当中,我们为大家介绍了一个好的告警通知应该具备的条件。在一般的指标告警中,在告警信…...
学习JavaEE的日子 day12 构造方法 类的制作
Day12 需求:创建人类的对象,并操作对象 分析: 人类 - Person 属性:name、sex、age 方法:eat、sleep 场景:创建多个对象,去操作对象 //测试类:该类中有main方法,测试我们写…...
Mybatis-Plus基础学习
目录 第一章、快速了解mybatis-plus1.1)相关概念介绍1.2)为什么使用MyBatis-Plus1.3)学习过程中的疑问 第二章、 MyBatis-Plus与SpringBoot集成2.1)使用Spring Initializr创建SpringBoot项目2.2)安装Lombok插件2.3&…...
C#微信公众号HIS预约挂号系统源码
微信公众号预约挂号系统、支付宝小程序预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程,实时预约挂号、自费、医保结算,同时还可以查询检查检验报告等就诊信息,真正实现了让信息“多跑路”,让群众“少跑腿”。系统…...
Ubuntu 22.04上从零安装UCSF DOCK 6.11:手把手解决依赖与编译的那些坑
Ubuntu 22.04实战:UCSF DOCK 6.11完整安装指南与避坑手册在计算化学和药物发现领域,UCSF DOCK一直是分子对接和虚拟筛选的重要工具。最新发布的6.11版本集成了RDKit功能,为药物描述符计算和分子设计带来了全新可能。本文将带你在Ubuntu 22.04…...
VMware Workstation Pro 17免费许可证密钥终极指南:快速搭建专业虚拟化环境
VMware Workstation Pro 17免费许可证密钥终极指南:快速搭建专业虚拟化环境 【免费下载链接】VMware-Workstation-Pro-17-Licence-Keys Free VMware Workstation Pro 17 full license keys. Weve meticulously organized thousands of keys, catering to all major …...
2026年腾讯云OpenClaw/Hermes Agent配置Token Plan安装步骤详解
2026年腾讯云OpenClaw/Hermes Agent配置Token Plan安装步骤详解。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...
AI 初稿查重 15%-45%?2026 毕业论文双降(降重 + 降 AI)软件全攻略
用 AI 快速生成毕业论文初稿,已成 2026 届毕业生的主流选择,但初稿查重率普遍卡在 15%-45%、AIGC 疑似率超 50% 的双重困境,让不少同学焦虑:知网 / 维普查重不达标、AI 痕迹过重被导师打回、反复修改越改越乱。想要高效解决 “降重…...
Windows电脑C盘告急?手把手教你将Ollama模型库搬家到D盘(附环境变量配置详解)
Windows电脑C盘告急?手把手教你将Ollama模型库搬家到D盘(附环境变量配置详解)当你在Windows上玩转Ollama大模型时,C盘空间像被黑洞吞噬般迅速告急?别急着删文件或重装系统,今天带你用5分钟完成模型库的无痛…...
外观专利和实用新型
外观设计专利与实用新型专利:技术创新的法律双翼 谨以此文,献给每一位在产品创新与外观设计之间寻求法律护城河的工程师、架构师与技术决策者。外观设计专利与实用新型专利,如同一对孪生兄弟——一个守护“美学表达”,一个护卫“实用改进”;一个关乎“看起来怎样”,一个关…...
FPGA加速机器学习在粒子物理触发系统中的应用与实战
1. 项目概述:当FPGA遇上机器学习,为粒子物理装上“火眼金睛” 在大型强子对撞机(LHC)的心脏地带,每秒发生着数亿次质子对撞。每一次对撞都可能产生希格斯玻色子、顶夸克,或是我们尚未知晓的新物理现象。然而…...
在WSL2的Ubuntu 22.04上,用Intel OneAPI 2024完整配置VASP 6.3.2计算环境
在WSL2的Ubuntu 22.04上搭建Intel OneAPI 2024与VASP 6.3.2混合计算环境 对于使用Windows系统却需要运行Linux计算软件的材料模拟研究者而言,WSL2的出现彻底改变了跨平台科研的工作流。本文将手把手带你完成从零开始配置VASP 6.3.2的全过程,特别针对2024…...
国防采购如何吸引商业AI创新:OTA协议与敏捷合作模式解析
1. 项目概述:当国防采购遇上商业AI创新在过去的十几年里,我接触过不少政府与科技企业间的合作项目,从早期的云计算服务到后来的大数据分析平台。但最近几年,一个趋势愈发明显:以人工智能为代表的颠覆性技术,…...
Godot PCK文件解包:原理、工具与工程化实践指南
1. 为什么“解包PCK”不是技术炫技,而是实际工作刚需在Godot引擎生态里,“PCK文件”这三个字母背后藏着的不是冷冰板的二进制容器,而是一整套游戏交付逻辑的终点与逆向理解的起点。我第一次真正意识到这点,是在接手一个外包美术团…...
