Hibernate-领域模型 查询接口设计实现

发布于 2017-02-10 10:41:31 字数 112 浏览 985 评论 1

在一个功能模块下,通过接口提但是搜索条件不固定供给其他功能模块查询自己负责的功能模块。但是查询条件不固定,如何设计能降低其他功能模块对我负责的功能模块耦合度。即不需要了解条件key。
辛苦大家,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜无邪 2017-07-03 17:05:24

我现在有一种解决方案,跟大家交流。

接口中主要存在:
createQuery(); // 准备执行一个查询
list(); // 执行查询信息
param1(val); param2(val); ... // 设置查询条件的值

使用方法:
createQuery().param1().param2().list();

具体实现:

// 模拟模型
class Domain {
String param1;
String param2;
String param3;
}
// 查询接口
public interface DomainQuery {
DomainQuery createQuery();
List<Domain> list();
// ----- 可能出现的查询条件 -----------------
DomainQuery param1(Object param1);
DomainQuery param2(Object param2);
DomainQuery param3(Object param3);
// ----- 可能出现的查询条件 -----------------
}

class DomainQueryImpl implements DomainQuery {

private Map<String, Object> conditionos =
new HashMap<String, Object>();

DomainDao domainDao;

public void setDomainDao(DomainDao domainDao) {
this.domainDao = domainDao;
}

@Override
public DomainQuery createQuery() {
conditionos.clear();
return this;
}

@Override
public List<Domain> list() {
// 分析conditions,调用dao层查询数据
return domainDao.findByProperties(condtions);
}

@Override
public DomainQuery param1(Object param1) {
conditionos.put("param1", param1);
return this;
}

@Override
public DomainQuery param2(Object param2) {
conditionos.put("param2", param2);
return this;
}

@Override
public DomainQuery param3(Object param3) {
conditionos.put("param3", param3);
return this;
}
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文