SSH动态查询具体实现之service
来源:互联网 发布:tsp 组合优化问题 编辑:程序博客网 时间:2024/06/05 16:23
先贴代码:
public interface SnippetService { public int count(Class c,Object[][] eq,Object[][] like,String[][] datetime, String[] group,String[] asc,String[] desc); Public List<?> search(Class c,Object[][] eq,Object[][]like,String[][] datetime, String[] group,String[] asc,String[] desc, int start, int limit);}
service接口如上所示,具体参数说明详见上文--SSH动态查询封装接口介绍。
下面介绍serviceImpl:SnippetServiceImpl
@Component("snippetServiceImpl")public class SnippetServiceImpl implements SnippetService {@Resource(name = "snippetDao")private SnippetDao sd ;
SnippetServiceImpl 是SnippetService 的具体实现,首先引入dao层的东东SnippetDao sd(关于dao的一些接口方法,本文只介绍其作用),
public int count(Class c,Object[][] ob,Object[][] like,String[][] datetime,String[] group,String[] asc,String[] desc){StringBuffer hql = new StringBuffer( "from "+c.getSimpleName()+" j"); String q = sd.getHQL(ob,like,datetime,group,asc,desc); //得到完整hql if (!"".equals(q) && q != null) { hql.append(" where "); hql.append(q); } //参数值集合 Object[] param = sd.getValue(ob,like,datetime).toArray(); return sd.count(hql.toString(), param);} public List<?> search(Class c,Object[][] ob,Object[][] like,String[][] datetime,String[] group,String[] asc,String[] desc, int start, int limit) { StringBuffer hql = new StringBuffer("from "+c.getSimpleName()+" j"); String q = sd.getHQL(ob,like,datetime,group,asc,desc); //得到完整hql if (!"".equals(q) && q != null) { hql.append(" where "); hql.append(q); } //参数值集合 Object[] param = sd.getValue(ob,like,datetime).toArray(); // find方法。根据条件得到记录。start和limit对分页的设置。 return sd.findPublic(hql.toString(), param, start, limit); }
代码备注已介绍的比较清晰,
两方法都调用了Dao层的接口:
public String getHQL(Object[][] ob,Object[][] like,String[][] datetime,
String[] group,String[] asc,String[] desc);
目的是将service拼接的字符串 :"from "+c.getSimpleName()+" j"
同dao层经过判断筛选排序组合得到的后半段hql 相连,得到完整的hql语句。
public List<Object> getValue(Object[][] ob,Object[][] like,String[][] datetime);
目的是对精确、模糊单个或组合查找传入的参数值进行筛选,得到与hql参数相对
应的有效参数集合,其排列顺序不可更改。
count单独调用Dao层的接口:
public int count(String hql, Object[] param);
根据hql及其对应的value在dao层完成查询工作,将总记录数返回。
Search单独调用Dao层的接口:
public List<?> findPublic(String hql, Object[] param,
int start,int limit);
根据hql及其对应的value以及分页value实现数据列表当前页工作。
相关文章:
SSH动态查询封装接口介绍
SSH动态查询具体实现之Dao
- SSH动态查询具体实现之service
- SSH动态查询具体实现之service
- SSH动态查询具体实现之Dao
- SSH动态查询具体实现之Dao
- SSH整合之使用spring-DWR实现动态综合查询数据
- ssh实现查询分页
- ssh实现分页查询
- 多组条件查询【具体怎么实现】
- PHP客户端 solr查询具体实现
- Java调用C++动态库具体实现
- Android:Service:实现学生查询
- SSH动态查询封装接口介绍
- SSH动态查询封装接口介绍
- SSH实现动态数据源切换
- 实现动态参数查询
- mysql 实现动态查询
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- 嵌入式学习之路(八)——C语言学习(3)
- 字符段长度
- Hibernate的加载方式——GET与LOAD的对比
- sencha touch笔记(6)——路由控制(1)
- Flume OG 介绍和配置
- SSH动态查询具体实现之service
- 写了份装B代码
- 弧垂计算
- 手机iphone ios android 打开QQ对话框的网页代码!
- 利息计算器
- 【IOS游戏开发】之 一年两次加速审核机会
- 配置PHP环境时 phpinfo()显示空白
- GlassFish4 的admin默认密码为空
- flume 参考文档 (一)