Felder mit zwei Bohnen zusammenführen


Vorwort

Ehrlich gesagt ist dies das zweite Mal, dass ich bei der Arbeit auf dieses Problem stoße ...
Obwohl diese Anforderung seltsam ist, habe ich sie trotzdem aufgezeichnet.

Anforderungsübersicht:
1: Objekt a, 合并两个bean的字段(ID, Name, Favoriten)
2: Objekt b, 没有明确的属性(die Anzahl der Attribute ist ungewiss, der Attributtyp ist ungewiss)
3: Alle Felder sind im Rückgabeergebnis der Schnittstelle enthalten


提示:以下是本篇文章正文内容,下面案例可供参考

1. Vorbereitungsarbeiten

hutool, google.guava

1. Bereiten Sie ein Objekt vor, das nur aus Object...OdooResp besteht


@Data
public class OdooResp {
    
    
    private Object employee_id;
    private Object salary;
    private Object booleanFlag;
    private Object null_test;
    private Object job_id;
    private Object history;

    public OdooResp() {
    
    
    }

    public OdooResp(Object employee_id, Object salary, Object booleanFlag, Object null_test, Object job_id, Object history) {
    
    
        this.employee_id = employee_id;
        this.salary = salary;
        this.booleanFlag = booleanFlag;
        this.null_test = null_test;
        this.job_id = job_id;
        this.history = history;
    }
}

2. Bereiten Sie ein Objekt mit festen Attributen vor ... Benutzer


@Data
public class User {
    
    

    private Long id;

    private String name;

    private List<String> fav;

    public User() {
    
    
    }

    public User(Long id, String name, List<String> fav) {
    
    
        this.id = id;
        this.name = name;
        this.fav = fav;
    }
}

2. Schnittstellen-API

Der Code lautet wie folgt (Beispiel):


@RestController
@RequestMapping("bean2map")
public class Bean2MapApi {
    
    

    @GetMapping(value = "demo", name = "将两个bean组合成一个map返回给前端")
    public Object demo() {
    
    
        List<Object> response = new ArrayList<>();

        List<OdooResp> odooRespList = getOdooRespList();
        List<Map<String, Object>> odooMapList = odooRespList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList());

        List<User> userList = getUserList();
        
    	//前面都是造数据,getObject是重点
    	return userList.stream().map(user -> getObject(odooMapList, user)).collect(Collectors.toList());
    }

    private Object getObject(List<Map<String, Object>> odooMapList, User user) {
    
    
        Map<String, Object> odooMap = odooMapList.stream().filter(tempMap -> user.getId().equals(tempMap.get("employee_id"))).findFirst().orElse(null);
        if (CollectionUtils.isEmpty(odooMap)) {
    
    
            return user;
        }
        Map<String, Object> result = new HashMap<>();
        result.putAll(BeanUtil.beanToMap(user));
        result.putAll(odooMap);
        return result;
    }

    public static List<OdooResp> getOdooRespList() {
    
    
        List<OdooResp> odooRespList = new ArrayList<>();
        List<List<Object>> hository1 = Lists.newArrayList(Lists.newArrayList(2018, "kk", "不行"), Lists.newArrayList(2020, "cl", "一般"), Lists.newArrayList(2022, "yl", "从可以到不行"));
        List<List<Object>> hository2 = Lists.newArrayList(Lists.newArrayList(2016, "jd", "不行"), Lists.newArrayList(2017, "gc", "一般"), Lists.newArrayList(2022, "home", "从可以到不行"));

        odooRespList.add(new OdooResp(111L, new BigDecimal("108.50"), false, null, Lists.newArrayList(2222, "实习生"), hository1));
        odooRespList.add(new OdooResp(222L, new BigDecimal("4500.50"), true, Lists.newArrayList("最开始", "早恋了"), Lists.newArrayList("最后", "结婚了"), hository2));

        return odooRespList;
    }


    public static List<User> getUserList() {
    
    
        List<User> userList = new ArrayList<>();
        userList.add(new User(111L, "张三", Lists.newArrayList("吃饭", "睡觉", "打豆豆")));
        userList.add(new User(222L, "李四", Lists.newArrayList("动漫", "小说")));
        return userList;
    }
}

3. Testergebnisse

[
    {
    
    
        "null_test": null,
        "job_id": [
            2222,
            "实习生"
        ],
        "employee_id": "111",
        "name": "张三",
        "fav": [
            "吃饭",
            "睡觉",
            "打豆豆"
        ],
        "id": "111",
        "history": [
            [
                2018,
                "kk",
                "不行"
            ],
            [
                2020,
                "cl",
                "一般"
            ],
            [
                2022,
                "yl",
                "从可以到不行"
            ]
        ],
        "salary": 108.50,
        "booleanFlag": false
    },
    {
    
    
        "null_test": [
            "最开始",
            "早恋了"
        ],
        "job_id": [
            "最后",
            "结婚了"
        ],
        "employee_id": "222",
        "name": "李四",
        "fav": [
            "动漫",
            "小说"
        ],
        "id": "222",
        "history": [
            [
                2016,
                "jd",
                "不行"
            ],
            [
                2017,
                "gc",
                "一般"
            ],
            [
                2022,
                "home",
                "从可以到不行"
            ]
        ],
        "salary": 4500.50,
        "booleanFlag": true
    }
]

Zusammenfassen

Keine Zusammenfassung…

Guess you like

Origin blog.csdn.net/qq_37700773/article/details/130120247