本方法適應於將【字符串分割符轉爲多行數據】
數據庫中的數據格式如下,其他字段省去,此需求還同時解決like模糊查詢 其中轉換後的數據中detail 中含有的id ;其他如排序不進行講解
ids detail
1,2,3 1:405|3:890
希望轉換後的數據爲
id detail
1 1:405|3:890
2 1:405|3:890
3 1:405|3:890
並且希望最終結果爲 detail like '%id%'
1 1:405|3:890
3 1:405|3:890
User user = new User();
user.setIds("1,2,3");
user.setName("張四");
user.setAge(15);
user.setDetails("1:405|3:890");
User user2 = new User();
user2.setIds("405,57,6");
user2.setName("李三");
user2.setAge(18);
user2.setDetails("405:405|8:890");
ArrayList<User> users = new ArrayList<User>();
users.add(user);
users.add(user2);
ArrayList<User> users2 = new ArrayList<User>();
users.stream().forEach((en) -> {
if (en.getIds() != null && !"".equals(en.getIds())) {
String[] split = en.getIds().split(",");
System.out.println(Arrays.asList(split));
Arrays.stream(split).forEach((t) -> {
User instance = getInstance();
instance.setId(t);
instance.setDetails(en.getDetails());
instance.setName(en.getName());
instance.setAge(en.getAge());
instance.setIds(en.getIds());
users2.add(instance);
});
}
});
List<User> collect = users2.stream().filter(d -> d.getDetails().contains(d.getId())).sorted(Comparator.comparing(User::getAge).reversed().thenComparing(User::getName)).collect(Collectors.toList());
System.out.println(collect);
public static User getInstance() { return new User(); }
以上爲oracle語法(遞歸查詢和正則匹配)轉mysql語法遇到