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动态查询封装接口介绍。

 

 下面介绍serviceImplSnippetServiceImpl 

  

@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及其对应的valuedao层完成查询工作,将总记录数返回。

       

     Search单独调用Dao层的接口

     public List<?> findPublic(String hql, Object[] param,

             int start,int limit);

       根据hql及其对应的value以及分页value实现数据列表当前页工作。

 

 相关文章:

SSH动态查询封装接口介绍

SSH动态查询具体实现之Dao


0 0