java代碼列轉多行

本方法適應於將【字符串分割符轉爲多行數據】

數據庫中的數據格式如下,其他字段省去,此需求還同時解決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語法遇到 

 

 

 


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章