添加依赖
<dependency><groupId>cn.zhxu</groupId><artifactId>bean-searcher-boot-starter</artifactId><version>4.1.2</version>
</dependency>
Bean类
@SearchBean(tables="user u, role r", where="u.role_id = r.id", autoMapTo="u")
public class User {private Long id; // 用户ID(u.id)private String name; // 用户名(u.name)private int age; // 年龄(u.age)private int roleId; // 角色ID(u.role_id)@DbField("r.name") // 指明这个属性来自 role 表的 name 字段private String role; // 角色名(r.name)// Getter and Setter ...
}@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate MapSearcher mapSearcher; // 注入检索器(由 bean-searcher-boot-starter 提供)@GetMapping("/index")public SearchResult<Map<String, Object>> index(HttpServletRequest request) {// 这里咱们只写一行代码return mapSearcher.search(User.class, MapUtils.flat(request.getParameterMap()));}}
示例:
public class controllerDemo{@GetMapping("/index")public SearchResult<Map<String, Object>> index(Integer page, Integer size,String sort, String order, String name, Integer roleId,@RequestParam(value = "name-op", required = false) String name_op,@RequestParam(value = "name-ic", required = false) Boolean name_ic,@RequestParam(value = "age-0", required = false) Integer age_0,@RequestParam(value = "age-1", required = false) Integer age_1,@RequestParam(value = "age-op", required = false) String age_op) {Map<String, Object> params = MapUtils.builder().field(Employee::getName, name).op(name_op).ic(name_ic).field(Employee::getAge, age_0, age_1).op(age_op).field(Employee::getRoleId, roleId).orderBy(sort, order).page(page, size).build();return mapSearcher.search(User.class, params);}}
请求json示例:
{"dataList": [ // 用户列表,默认返回第 0 页,默认分页大小为 15 (可配置){ "id": 1, "name": "Jack", "age": 25, "roleId": 1, "role": "普通用户" },{ "id": 2, "name": "Tom", "age": 26, "roleId": 1, "role": "普通用户" },...],"totalCount": 100 // 用户总数
}{"dataList": [ // 用户列表,默认返回第 0 页(只包含 id,name,role 字段){ "id": 1, "name": "Jack", "role": "普通用户" },{ "id": 2, "name": "Tom", "role": "普通用户" },...],"totalCount": 100 // 用户总数
}
- 参考:
https://juejin.cn/post/7027733039299952676