您的位置:首页 > 其它

SSH动态查询封装接口介绍

2016-04-01 02:24 281 查看
http://blog.csdn.net/qiyuexuelang/article/details/17297497

目录(?)[+]

SSH动态查询封装接口介绍

1.查询记录总条数

public int count(Class c,Object[][] eq,Object[][] like,String[][] datetime,String[][] noeq,String[] group,String[] asc,String[] desc);

2.分页动态查询记录

public List<?> search(Class c,Object[][] eq,Object[][] like,String[][] datetime,String[][] noeq,String[] group,String[] asc,String[] desc,int start, int limit);

首先介绍两个查询接口的公有参数:

Class c : bean.class,即映射到你查询的表结构的实体类

Object[][] eq : 精确查询的参数name和value集合

{{“name”,”小明”},{code,”TB321”},...}

Object[][] like :普通模糊查询的参数name和value集合

{{”company“,”大同”},{name,”小”},...}

String[][] noeq :不满足此条件的查询 参数为name和value集合

{{"status","2"}} 执行状态不为2的所有记录

此类参数可用于加载审核页的方法中,审核页需要显示“待审核”、“未通过”等状态信息,但不显示“已生效”信息,此时过滤掉已失效信息需要在此 添加参数 相当于数据库语言的not in

String[][] datetime:模糊查询日期时间的参数name和value集合(日期查询 需要转换格式,故单独列出)

{{“signdate”,"2014"},{"startdate","2014-01"},{"enddate","2014-06-06"}}

日期格式YYYY/YYYY-MM/YYYY-MM-DD(日期字符串正则校验可以在页面完成)

String[] group :要分组的参数name列表

String[] asc :对查询结果升序排列所需的参数name集合

String[] desc :对查询结果降序排列所需的参数name集合

这里提到的name非数据库字段名,而是bean的属性名,当然如果存在表关联,

以用户和职位为例,User 和 Dept关联,存在Dept dept;

则如果要查询职位名为xxx的所有User,name可填写为 dept.name,eq某一集合可填写为{”dept.name”,”xxx”}

分页动态查询记录独有的接口参数:

int start :从第几条记录开始查询

int limit :本页查询的最大记录数

参数列表除Class c不可为空外,其余参数皆可为空。对集合参数中的不法数据(子集合填写不完整、参数为null or “”实现自动过滤)

根据你的不同需求使用接口相应参数,以合同表为例:

精确查询:根据合同编号、合同名称、客户代表等精确信息实现查询

模糊查询:根据合同签订、生效、失效、制表年、月、日等模糊时间,部分合同名称等不精确参数实现查询

组合查询:根据页面需求在action获取相应参数(页面参数统一使用String接收,避免int出现默认为0的情况发生。在action使用Object对所获value进行统一类型设置),根据不同的参数进行单个、多个条件的组合查询。

意义:简化代码,所有类(表结构)的查询都可组合使用这两个接口。

便于维护,一旦查询需求有改动,只需更改页面参数和action接收参数即可

不足:未实现比较范围(> = < between and)的查找(可按需实现)。以及对一些参数(数量总计、平均值)的特殊查找,此类查询非公有故弃之.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: