代码拉取完成,页面将自动刷新
An enhanced component for Mongodb to simplify development.
Write a project for person learning.
// 方式1: CriteriaSimpleBuilder
DepartmentDTO departmentDTO = new DepartmentDTO();
departmentDTO.setCreateTime(example.getCreateTime());
departmentDTO.setCharacter(example.getCharacter());
// 以And连接,dto属性注解@BindQuery + CriteriaSimpleBuilder.byModel(queryModel),构造 Criteria
Criteria criteria1 = CriteriaBuilder.createAndLinkBuilder()
.byModel(departmentDTO)
.build();
// 以Or连接,dto属性注解@BindQuery + CriteriaSimpleBuilder.byModel(queryModel), 构造 Criteria
Criteria criteria2 = CriteriaBuilder.createOrLinkBuilder()
.byModel(departmentDTO)
.build();
// 以And连接,CriteriaSimpleBuilder.eq(column, params)...链式构造,构造 Criteria
Criteria criteria3 = CriteriaBuilder.createAndLinkBuilder()
.gte("createTime", example.getCreateTime())
.eq("parentId",example.getCreateTime())
.build();
// CriteriaSimpleBuilder复杂组合,构造 Criteria
Criteria criteria4 = CriteriaBuilder.createAndLinkBuilder()
.byModel(departmentDTO)
.gte("createTime", example.getCreateTime())
.eq("department.parentId", example.getCreateTime())
.append(Criteria.where("orgId").is(1))
.append(
CriteriaBuilder
.createOrLinkBuilder()
.like("name", "test")
.build()
)
.build();
// 方式2:CriteriaLambdaBuilder
// 以And连接,注解@BindQuery + CriteriaLambdaBuilder + SerializableFunction组合 构造 Criteria, 用法与上方相似
Criteria criteria5 = CriteriaBuilder.createAndLinkLambdaBuilder()
.byModel(departmentDTO)
.gte(DepartmentDTO::getCreateTime, example.getCreateTime())
.like(DepartmentDTO::getCharacter, example.getCharacter())
.build();
// elemMatch 数组模糊查询
Criteria criteria6 = CriteriaBuilder.createOrLinkLambdaBuilder()
.arrayElemLike(SimpleSplitVO::getManagers, TestUser::getUsername, "test" )
.build();
// QueryBuilder 构造 Query, 并链式调用printQueryLog 打印Find和Count语句
Query query1 = QueryBuilder.query(criteria1)
.skip(0)
.limit(10)
.printQueryLog(mongoConverter, Department.class) //打印 db.collection.find()
.printCountLog(mongoConverter, Department.class) //打印 db.collection.count()
.build();
List<Department> list1 = mongoTemplate.find(query1, Department.class);
Assert.assertTrue(list1.size() >= 1);
long count = mongoTemplate.count(query1, Department.class);
Assert.assertTrue(count >= 1);
// 从 QueryBuilder 获取 日志, 打印
QueryBuilder queryBuilder = QueryBuilder.query(criteria1);
System.out.println(queryBuilder.getQueryLog(mongoConverter, Department.class));
Query query2 = queryBuilder.build();
List<Department> list2 = mongoTemplate.find(query2,Department.class);
Assert.assertTrue(list2.size() >= 1);
// sort 构造器
Sort sort = SortBuilder.create()
.add("createTime", Sort.Direction.DESC)
.add(Department::getId, Sort.Direction.ASC)
.add(Sort.Order.asc("parentId"))
.build();
query1.with(sort);
//打印 含有排序语句
QueryBuilder.of(query1).printQueryLog(mongoConverter, Department.class);
List<Department> list3 = mongoTemplate.find(query1, Department.class);
Assert.assertTrue(list3.size() >= 1);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。