日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java动态字段排序_JAVA 列表动态增加字段显示和任意字段排序

發(fā)布時(shí)間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java动态字段排序_JAVA 列表动态增加字段显示和任意字段排序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

需求是用戶可以在頁(yè)面管理展示的字段,并且對(duì)字段的展示順序自定義排序,控制所有字段顯示隱藏,表中有默認(rèn)基礎(chǔ)字段是不可以刪除的

這邊全部都是后端實(shí)現(xiàn):

思路:

數(shù)據(jù)表設(shè)定一個(gè)字段專門(mén)存放動(dòng)態(tài)字段,字段內(nèi)容以JSON的格式k-v形式存放

建立字段管理表,設(shè)置code碼,名稱,排序

查詢接口將對(duì)象根據(jù)字段順序轉(zhuǎn)換成map返回

偽代碼:

字段管理

public class StaffManager implements Serializable {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Integer id;

@Column(name = "name", length = 32)

private String name;

@ApiParam(value = "排序")

private Integer sorts;

@ApiParam(value = "代表字段")

private String code;

@ApiParam(value = "是否展示")

private Boolean isShow;

}

@ApiParam(value = "自定義字段")

private String customFields;

/**

* 定義字段

*

* @param content [{"name":"xx", "sorts":"", "code":"name", "isShow":"true"}...]

*/

public void update(String content) {

//清空數(shù)據(jù)表

dao.truncate();

JSONArray array = JSONObject.parseArray(content);

for (int i = 0; i < array.size(); i++) {

StaffManager staffManager = JSONObject.toJavaObject((JSONObject)array.get(i), StaffManager.class);

if (StringUtil.isEmpty(staffManager.getCode())) {

//設(shè)置擴(kuò)展字段的名稱

staffManager.setCode("extend_" + UUIDUtil.getCode());

}

staffManager.setSorts(i);

//保存對(duì)象。。。

}

}

/**

* 新增用戶

*

* @param content 擴(kuò)展字段 [{"code":"xx", "value":""}]

* extend

*/

public void insert(Integer id, String name, String tel, Integer classId,

Integer deptId, String tagCode, String content) {

if (StringUtil.isNotEmpty(content)){

JSONArray array = JSONObject.parseArray(content);

List> list = Lists.newArrayList();

for (Object o : array) {

Mapreq = JSONObject.toJavaObject((JSONObject)o, Map.class);

req.forEach((k,v)->{

//判斷是否存在該字段

StaffManager manager = dao.findByCode(k);

if (manager != null){

list.add(req);

}

});

}

String s = JSON.toJSONString(list);

//保存列表對(duì)象。。。

}

}

最后查詢排序結(jié)果

public MappageVagueStaff2(Integer num, Integer size, String content) {

//分頁(yè)獲取到列表對(duì)象。。。

Page= ...

List> list = Lists.newArrayList();

//設(shè)置對(duì)比集合表頭 并排序

Listtitles = staffManagerService

.findAll()

.stream()

.sorted(Comparator.comparing(StaffManager::getSorts, Comparator.nullsLast(Integer::compareTo)))

.collect(Collectors.toList());

ListstaffList = staff.getContent();

staffList.forEach(x->{

MaphashMap = new LinkedHashMap<>(16);

//將原對(duì)象轉(zhuǎn)換成Map

Mapmap = ...

//根據(jù)列表字段和順序設(shè)置

titles.forEach(u->{

String code = u.getCode();

String substring = code;

if (code.contains(SPLIT)){

substring = code.substring(0, code.indexOf(SPLIT));

}

Object o = map.get(substring);

//根據(jù)順序設(shè)置值

hashMap.put(substring, o);

});

//每個(gè)對(duì)象順序重排后 設(shè)置擴(kuò)展字段的值

String customFields = x.getCustomFields();

JSONArray array = JSONObject.parseArray(customFields);

if (array != null && array.size() > 0){

for (Object o : array) {

MapjsonMap = JSONObject.toJavaObject((JSONObject)o, Map.class);

//判斷是否是是存在的字段

jsonMap.forEach((k,v)->{

if (hashMap.containsKey(k)){

hashMap.put(k, v);

}

});

}

}

list.add(hashMap);

});

Mapmap = Maps.newHashMap();

map.put("pageMax", staff.getTotalElements());

map.put("data", list);

map.put("title", titles);

return map;

}

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的java动态字段排序_JAVA 列表动态增加字段显示和任意字段排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。