只有绝望的赌鬼才肯把全部所有作孤注的一掷。一个商人如果把他的全部财产装在一只船上,人家就管他叫冒失鬼——席勒
我写了个函数
代码语言:javascript复制/**
* 获取表内字段
*
* @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> {
}
演示如下
代码语言:javascript复制@Test
void testGetColumn() {
System.out.println(getColumn(User::getUsername));
}
支持@TableField
注解,也支持自定义的转换规则
默认是驼峰转下划线
效果如下