自定义default方法
# 自定义default方法
继承自BaseEsMapper的自定义mapper,虽然拥有了BaseEsMapper的所有方法,但是个别场景下,用户期望自定义一些通用公共方法,目前框架还不支持像Mybatis一样可以自定义xml,把dsl写进xml,实际上此功能必要性也不高,因为手写 dsl和手写sql的复杂度是不可相提并论的,dsl本事属于json树形结构,如果使用xml定义,对用户而言负担太重了,并且我们也提供了可以直接执行dsl的api,加上我们提供的已有方法配合混合查询已经可以满足99%的场景开箱即用,1%的场景混合查询满足, 来覆盖用户所有需求,因此短期内暂不考虑支持此功能. 既然不支持自定义xml方法,那么是否可以支持自定义default方法? 我们社区的优秀开发者已经将此功能实现了,由于该PR提交位置不对,我尝试联系未果,PR暂未合并,但代码已由作者代为提交并发布,实际归属仍为acmdl528(githubID)所有.
##使用
/**
* 演示mapper中添加default方法
*
* @return document列表
*/
default List<Document> testDefaultMethod() {
LambdaEsQueryWrapper<Document> wrapper = EsWrappers.lambdaQuery(Document.class)
.eq(Document::getTitle, "老汉");
return selectList(wrapper);
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
温馨提示
在此之前,直接在mapper中定义default方法,会报错,想了解原因的可以参考源码中starter模块的register包中相关的代码
帮助我们改善此文档 (opens new window)
上次更新: 2024/05/18