重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
"select * from article where title like ?"
成都创新互联是专业的田家庵网站建设公司,田家庵接单;提供网站建设、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行田家庵网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
preparedStatement.setString(0,"内容");//这里具体是1还是0忘了
_代表一个为任意字符
%代表多个任意字符
比如:_ei,将匹配像Aei,Bei,Cai类似的字符
这就是模糊查询了把!
java中参数作为一个变量,sql语句写为
string sql_str = "select * from tb where name like '%"+参数+"%' ";
试试!
有了这个方法 查询就是浮云
申明:本方法由本人自行研究 如有不足之处请留言以及更正或者有更好的分页方法 可以留言共享
总所周知: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集合
ListObject params=new ArrayListObject();
//创建变量标示电泳带参分页还是无参分页
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
模糊查询?是指数据库吧!
还是要用到数据库的查询语句的,和编程语句没多大关系。比如像sqlserver
select
*
from
table
where
name
like
%li%
然后用jdbc去执行这条语句就ok啦