Java多态,想这样的封装该怎么改?
public List<T> findByCondition(CriteriaData data){ Criteria criteria = getSession().createCriteria(entityClazz); /** * 条件 */ if(MapUtils.isNotEmpty(data.getEqMap())){ for (Entry<String, Object> entry:data.getEqMap().entrySet()) { if(entry != null && entry.getKey() != null){ criteria.add(Restrictions.eq(entry.getKey(), entry.getValue())); } } } if(MapUtils.isNotEmpty(data.getLikeMap())){ for (Entry<String, String> entry:data.getLikeMap().entrySet()) { if(entry != null && entry.getKey() != null){ criteria.add(Restrictions.like(entry.getKey(), entry.getValue(),MatchMode.ANYWHERE)); } } } if(MapUtils.isNotEmpty(data.getInMap())){ for (Entry<String, Object[]> entry:data.getInMap().entrySet()) { if(entry != null && entry.getKey() != null){ criteria.add(Restrictions.in(entry.getKey(), entry.getValue())); } } } if(CollectionUtils.isNotEmpty(data.getBetweenList())){ for (CriteriaBetweenObj between:data.getBetweenList()) { if(between != null){ criteria.add(Restrictions.between(between.getPropertyName(), between.getLo(), between.getHi())); } } } /** * 排序 */ if(StringUtils.isNotEmpty(data.getOrderBy())){ criteria.addOrder(Order.asc(data.getOrderBy())); } return criteria.list();}
看到一个封装的方法,这样合理吗?要改的话,怎么改?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
好的,谢谢
写到最后还是一个mybatis,建议参考mybatis的解析器源码
是啊,那么要分开吗?
这就是一DetachedCriteria查询入口。根据个人的业务条件修改Restrictions条件,你不可能条件都是eq、like、in吧
谢谢
Restrictions你在调用时根据参数、需求等生成就行 接口就简单只需一个DetachedCriteria对象就行。