背景:在后台管理系统中几乎每个表都会有查询功能,然后每个查询会针对这个表的多个字段查询,大小查询,还有携带分页查询等等额外的查询,我看我老师写的这种接口都是先判断分页条件是否为空,然后查询参数是否为空等等,我就在想能不能把这个拆开了封装到一个方法里面,把这些重复的代码放在一起,只要传入几个必须的参数就可以查询出想要的东西了
- 实现:mybatis+注解+反射
mybatis:使用它的查询类,IService
注解:在实体类上写上注解描述这个字段在数据库的字段名,还有查询方式,是等于查询还是小于查询
反射:调用方法,反射获取字段上注解的信息生成EntityWrapper
原来代码示例:
@Autowired
IArticleService iArticleService;
/**
* 查询文章列表分页(可附带条件)
* @param pageNo 起始页
* @param pageSize 页码
* @param article 筛选条件
* @param needPage 是否需要分页
* @return 返回total总数,data文章列表
*/
@PostMapping("/gets")
public Map<String,Object> get(Integer pageNo,Integer pageSize,Article article, Boolean needPage){
EntityWrapper<Article> entityWrapper = new EntityWrapper<Article>();
if (needPage == null) {
needPage = Boolean.valueOf(true);
}
if (pageNo == null || pageNo.intValue() <= 0) {
pageNo = Integer.valueOf(1);
}
if (page