前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过Function获取属性对应字段

通过Function获取属性对应字段

作者头像
阿超
发布2022-08-16 20:34:57
1K0
发布2022-08-16 20:34:57
举报
文章被收录于专栏:快乐阿超

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

我写了个函数

代码语言: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));
}
image-20210629220827638
image-20210629220827638

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

默认是驼峰转下划线

效果如下

image-20210629220800888
image-20210629220800888
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档