Hibernate-领域模型 查询接口设计实现
在一个功能模块下,通过接口提但是搜索条件不固定供给其他功能模块查询自己负责的功能模块。但是查询条件不固定,如何设计能降低其他功能模块对我负责的功能模块耦合度。即不需要了解条件key。
辛苦大家,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在一个功能模块下,通过接口提但是搜索条件不固定供给其他功能模块查询自己负责的功能模块。但是查询条件不固定,如何设计能降低其他功能模块对我负责的功能模块耦合度。即不需要了解条件key。
辛苦大家,谢谢!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
我现在有一种解决方案,跟大家交流。
接口中主要存在:
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;
}
}