黑色风格网站主页面,南京营销,安徽建设教育协会网站,WordPress建站可以吗前言
在日常开发中遇到了#xff0c;需要对表中数据某个字段行数据转成列#xff0c;个人觉得这中做目前想到两种#xff0c; 一种是sql 操作#xff0c; 另一种代码中做逻辑处理。
方式一 Java 操作 import lombok.Data;import java.util.ArrayList;
import java.util.H…前言
在日常开发中遇到了需要对表中数据某个字段行数据转成列个人觉得这中做目前想到两种 一种是sql 操作 另一种代码中做逻辑处理。
方式一 Java 操作 import lombok.Data;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** author bmxc* date 06/11/2024* description 把 student 对象中的 sortNum,实现行转成列 sortNum 范围是固定的解决方式如下*/
public class Test {Datastatic class Student {private String id;private String name;private Integer sortNum;}Datastatic class Student2 {private String id;private String name;private Integer sortNum1;private Integer sortNum2;private Integer sortNum3;}public static void main(String[] args) {ListStudent students new ArrayList();Student student new Student();student.setId(1);student.setName(test1);student.setSortNum(1);students.add(student);Student student1 new Student();student1.setId(1);student1.setName(test2);student1.setSortNum(2);students.add(student1);Student student2 new Student();student2.setId(2);student2.setName(test3);student2.setSortNum(3);students.add(student2);Student student3 new Student();student3.setId(2);student3.setName(test4);student3.setSortNum(1);students.add(student3);// 诉求把list 对应中的student的 sort_num 转成行sort_num 是重复的sort_num的值是一定的假设是 3 也即是行转列/*** 1. 把List转map* 2. 循环遍历mao 实现行转列*/MapString, ListStudent studentHashMap new HashMap();for (Student student4 : students) {if (!studentHashMap.containsKey(student4.getId())) {studentHashMap.put(student4.getId(), new ArrayList());}studentHashMap.get(student4.getId()).add(student);}// 构建新的对象来平铺需要的每个对象中要展示的字段能实现固定功能就是比较死板。后续在优化for (Map.EntryString, ListStudent entry : studentHashMap.entrySet()) {ListStudent values entry.getValue();Student2 stu new Student2();if (values.size() 0) {// 筛入基本值Student student4 values.get(0);stu.setId(student4.getId());stu.setName(student4.getName());} else if (values.size() 1) {Student stu0 values.get(0);stu.setSortNum1(stu0.getSortNum());} else if (values.size() 2) {Student stu0 values.get(0);Student stu1 values.get(1);stu.setSortNum1(stu0.getSortNum());stu.setSortNum2(stu1.sortNum);} else if (values.size() 3) {Student stu0 values.get(0);Student stu1 values.get(1);Student stu2 values.get(2);stu.setSortNum1(stu0.getSortNum());stu.setSortNum2(stu1.sortNum);stu.setSortNum3(stu2.sortNum);}}}}
方式二 sql 操作
select
t.sortNum
,t1.sortNum as sortNum1
,t2.sortNum as sortNum2
from student t
left join student t1
on t1.idt.id
left join student t2
on t2.idt.id