通过Function获取属性对应字段

2022-08-16 20:34:57 浏览数 (1)

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

我写了个函数

代码语言: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

代码语言:javascript复制
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注解,也支持自定义的转换规则

默认是驼峰转下划线

效果如下

0 人点赞