java中怎么对时间进行模糊查询

 我来答
匿名用户
2013-07-15
展开全部
有了这个方法 查询就是浮云

申明:本方法由本人自行研究 如有不足之处请留言以及更正或者有更好的分页方法 可以留言共享

总所周知:java开发web程序不管是什么项目基本都会遇到分页 然而SSH2框架有多重搭建方式,当然,每个人自己搭建的框架都比较了解开发起来得心应手,克往往开发项目的是一个团队。其他成员不一定习惯用你的方法..每个人写的方法也不一样..比如有带参的等等....

有一定程序功底的程序员 会自己写分页方法方便自己,但是当别人不熟悉你的方式时电泳其实很有可能该这么传参都不知道..你还要写一个案例供他人参考。闲话不多说我们进入正题。

今天我就给大家总结下我所搭建的SSH2框架中的分页方法..

首先我们先写一个有参数方法:selectByPages()

此方法有 每页显示多说条数据 pageSize 第几页pageNum 、SQL语句 hql、
另外还要一个Object数组 Object... params 或者Object[]params 都可以

注意:这里的参数类型前倾加上 final 标示

//此方法执行带参分页前往数据库查询数据
protected List selectByPages(final int pageSize, final int pageNum,final String hql, final Object... params) {
return (List)getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(org.hibernate.Session session)throws org.hibernate.HibernateException,java.sql.SQLException {
org.hibernate.Query query = session.createQuery(hql);
for (int i = 0; i < params.length; i++) { //循环参数数组
query.setParameter(i , params[i]);
}
query.setFirstResult((pageNum - 1) * pageSize); //第几页
query.setMaxResults(pageSize); //每页显示条数
return query.list();
}
});
}

//此方法执行无参分页前往数据库查询数据
注意:这里的参数类型前倾加上 final 标示
这里需要参数 pageSize pageNum SQL语句 Object 数组
protected List selectByPage(final int pageSize, final int pageNum,final String hql, final Object... params) {
return (List)getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(org.hibernate.Session session)throws org.hibernate.HibernateException,java.sql.SQLException {
org.hibernate.Query query = session.createQuery(hql);
query.setFirstResult((pageNum - 1) * pageSize); //第几页
query.setMaxResults(pageSize); //每页显示条数
return query.list();
}
});
}

接下来就是分页的重点方法:

注意:这里的参数类型前倾加上 final 标示
这里需要参数: pageSize pageNum 和一个对象 标示Object类型是标示这里可以传项目中任意一张表

public List getPageList(final Object entity,final Integer pageSize,final Integer pageNum){
//创建一个Object List集合
List<Object> params=new ArrayList<Object>();
//创建变量标示电泳带参分页还是无参分页
int bool = 0;
//得到action传过来的对象 注:这里可以是你项目中任何一个对象也就是说可以是任何一张表
Class clas = entity.getClass();
//组建前提SQL语句用StringBuffer 以方便后面逻辑需要好追加条件
//通过 clas的getSimpleName() 得到这个对象的名字
StringBuffer buff = new StringBuffer("from "+clas.getSimpleName()+" where 1=1");
//这里的buff = “from 表名/对象名 where 1=1”
java.lang.reflect.Field[] field = clas.getDeclaredFields();
//循环这个对象
for (int i = 0; i < field.length; i++) {
//field[i].getType().toString() 得到属性类型 如:java.long.Integer
//field[i].getName() 得到属性名称 如:id name
try {
String firstLetter = field[i].getName().substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + field[i].getName().substring(1);
Method method = entity.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(entity, new Object[] {});
// 这里得到这个属性对应的值 如:id = "1" name = "张三"
if(value!=null&&!value.equals("")){
//如果这个属性的值不为空并且不等于null 那么现在就组建SQL语句 并将属性的值取出来 存到申明好的集合里面去
bool=1;
buff.append(" and "+field[i].getName()+" like ? order by "+field[0].getName());
params.add("%"+value+"%");
}else {
if(bool==0){
bool=0;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//对吼判断bool等于0还是1 如果bool=0 我们就调用写好的selectByPage 无参分页方法
if(bool==0){
return selectByPage(pageSize, pageNum, entity, field[0].getName());
}
//对吼判断bool等于1 我们就调用写好的selectByPage() 带参分页方法
//这里将组建好的SQL语句传过去同事也将组建好的集合传给Object数组 记得SQL语句一定要.toString() 集合要.toArray()
return selectByPages(pageSize, pageNum, buff.toString(), params.toArray());
}
}

感谢来宾细心阅读 纯属个人分享 如要转载请 注明原文来源,如有不对的地方请留言或者更正 谢谢
Java(Web)技术交流①群:20682437 群主 重庆-java-猫猫
原文作者:362440326
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
匿名用户
2013-07-15
展开全部
采用like关键字查询
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式