通过Function获取属性对应字段

简介: 通过Function获取属性对应字段

只有绝望的赌鬼才肯把全部所有作孤注的一掷。一个商人如果把他的全部财产装在一只船上,人家就管他叫冒失鬼——席勒

我写了个函数

/**
 * 获取表内字段
 *
 * @param function 字段
 * @return java.lang.String
 * @author <achao1441470436@gmail.com>
 * @since 2021/6/29 16:51
 */
public static <R, T> String getColumn(SFunction<T, R> function) {
    SerializedLambda lambda = LambdaUtils.resolve(function);
    TableInfo tableInfo = TableInfoHelper.getTableInfo(lambda.getImplClass());
    return tableInfo.getFieldList()
            .parallelStream()
            .filter(filed -> PropertyNamer.methodToProperty(lambda.getImplMethodName()).equals(filed.getProperty()))
            .findFirst()
            .map(TableFieldInfo::getColumn)
            .orElseThrow(() -> new MybatisPlusException("未找到该字段"));
}

依赖mybatis-plus

能通过Function获取属性对应字段

注意需要有BaseMapper

package com.ruben.simpleideaspringboot.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruben.simpleideaspringboot.pojo.po.User;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author <achao1441470436@gmail.com>
 * @since 2021/5/15 0015 22:40
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {
}

演示如下

@Test
void testGetColumn() {
    System.out.println(getColumn(User::getUsername));
}

支持@TableField注解,也支持自定义的转换规则

默认是驼峰转下划线

效果如下

相关文章
|
2月前
|
机器学习/深度学习
transition-timing-function属性
【10月更文挑战第6天】transition-timing-function属性。
24 4
|
2月前
|
机器学习/深度学习
transition-timing-function属性
【10月更文挑战第5天】transition-timing-function属性。
17 1
|
4月前
|
机器学习/深度学习
transition-timing-function属性
【8月更文挑战第24天】transition-timing-function属性。
36 1
|
JavaScript PHP
js小记 function 的 length 属性
原文:js小记 function 的 length 属性 [1,2,3].length  可以得到 3, "123".length  也可以得到 3,这个略懂js的都知道。 但是  eval.length,RegExp.length,"".toString.length,1..toString.length  会得到什么呢? 分别得到 1,2,0,1,这些数字代表什么呢? 这个是群里很多新人朋友一直问的一个问题,其实函数的 length 得到的是形参个数。
895 0
|
29天前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。
|
2月前
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
89 1
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新语法,相比传统函数表达式更简洁,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。这使得箭头函数在处理回调和闭包时更加灵活方便。
|
2月前
|
C++ 容器
函数对象包装器function和bind机制
函数对象包装器function和bind机制
22 0
|
4月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.

热门文章

最新文章