Java中根据名称拿到实体对应属性的值

Java中根据名称拿到实体对应属性的值

  • 如何根据名称定位实体类对应的属性
    • 背景
    • 实现方法流程
    • @Column注解介绍

如何根据名称定位实体类对应的属性

Java中通常我们的实体类都是英文编码格式,只是通过注释的方式给每个英文属性标注上汉字语义,那么问题来,如果前端传一个汉字名称,如何来匹配上实体类对应的英文属性呢?在实际开发过程中是否以此方式拿到对应属性的值呢?

背景

最近项目中需要开发这么一个功能:前端传入一个汉字名称,需要在后端匹配上某个实体类对应的英文属性,以此就可以获取到对应属性的值。

实现方法流程

一、在后台对应的实体类里对每个属性使用@Column注解,以此方法给每个英文属性标注上对应的汉字语义,如下示例实体类:

import lombok.Data;
import javax.persistence.Column;@Data
public class TestCar {//主键唯一idprivate Long Id;@Column(name="指导价格(万元)")private String guidePrice;// 车身尺寸@Column(name="车身尺寸")private String carSize;// 轴距@Column(name="轴距")private String carWheelbase;// 最大马力(Ps)@Column(name="最大马力")private String maxHorsepower;// 油耗(L/100km)@Column(name="油耗(L/100km)")private String fuelConsumption;
}

二、编写功能测试类

1.代码详情

import java.lang.reflect.Field;
import lombok.extern.slf4j.Slf4j;
import javax.persistence.Column;
import org.apache.commons.lang3.reflect.FieldUtils;@Slf4j
public class TestController {public static void main(String[] args) throws IllegalAccessException {//前端传入的以空格隔开的汉字名称String str = "指导";//String str = "马力";TestCar testCar = new TestCar();//设置最大马力testCar.setMaxHorsepower("179");//设置指导价格testCar.setGuidePrice("76");String columnValue1 = null;Field[] fields = FieldUtils.getAllFields(TestCar.class);//遍历BuickCarsModels实体类属性,与传入的汉字名称str进行匹配for(Field f : fields) {Column columnAnnotation = f.getAnnotation(Column.class);//使用indexOf()进行匹配,没匹配上即为-1;否则不为-1if(columnAnnotation != null && columnAnnotation.name().indexOf(str) != -1) {f.setAccessible(true);//获取匹配上属性对应的值columnValue1 = (String) f.get(testCar);log.info("匹配上的汉字名称:{} 匹配上的英文属性:{} 获取对应属性值:{}",columnAnnotation.name(), f.getName(), columnValue1);}}}
}

2.效果图

前端传:“指导”字样
传指导汉字效果图
前端传:“马力”字样
传马力汉字效果图

@Column注解介绍

1.用来标识实体类中属性与数据表中字段的对应关系。
2.Column可以标注在属性前或getter方法前。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部