springdata jpa Example、Pageable分页查询使用
·
springdata jpa Example、Pageable分页查询使用
-
ExampleMatcher实例查询三要素
-
实体对象:在ORM框架中与Table对应的域对象,一个对象代表数据库表中的一条记录,如上例中User对象,对应user表。在构建查询条件时,一个实体对象代表的是查询条件中的“数值”部分。如:要查询姓“X”的客户,实体对象只需要存储条件值“X”。
-
匹配器:ExampleMatcher对象,它是匹配“实体对象”的,表示了如何使用“实体对象”中的“值”进行查询,它代表的是“查询方式”,解释了如何去查的问题。如:要查询姓“X”的客户,即姓名以“X”开头的客户,该对象就表示了“以某某开头的”这个查询方式,如上例中:withMatcher(“userName”, GenericPropertyMatchers.startsWith())
-
实例:即Example对象,代表的是完整的查询条件。由实体对象(查询条件值)和匹配器(查询方式)共同创建。最终根据实例来findAll即可。(此三点是借用别人的话)
-
-
代码实例:
public Page<DictionaryItem> findDictionaryByPage(BaseParam param) { Pageable pageable = PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.Direction.ASC, "orderNo"); //实体DictionaryItem DictionaryItem item = new DictionaryItem(); item.setDictName(param.getName()); item.setDictCode(param.getCode()); //创建匹配器,组装查询条件 ExampleMatcher matcher = ExampleMatcher.matching() //构建对象 .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询 .withIgnoreCase(true) //改变默认大小写忽略方式:忽略大小写 .withMatcher("dictName", ExampleMatcher.GenericPropertyMatchers.startsWith()) //采用“开始匹配”的方式查询 .withMatcher("dictCode",ExampleMatcher.GenericPropertyMatchers.contains()) //忽略属性:因为是int类型(基本类型有默认值),需要忽略掉 .withIgnorePaths("id","is_use_icon","orderNo", "parentId","dictLevel","createUserId","dbStatus") .withIgnoreNullValues(); //创建实例 Example<DictionaryItem> ex = Example.of(item, matcher); return dictionaryRepository.findAll(ex,pageable); }
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)