getHibernateTemplate能不能执行模糊查询, 50
知道的请说下怎么用,谢谢publicListqueryByLike(Stringcond)throwsException{Listall=null;Stringhql="...
知道的请说下怎么用,谢谢
public List queryByLike(String cond) throws Exception {
List all = null;
String hql = "from Note as n where n.title LIKE ? or n.author LIKE ? or n.content LIKE ?";
Query q = this.session.createQuery(hql);
q.setString(0,"%"+cond+"%");
q.setString(1,"%"+cond+"%");
q.setString(2,"%"+cond+"%");
all = q.list();
this.session.close();
return all;
}
这个是我以前用session写的,但是现在要用geiHibernateTemplate模板里面的方法写,要实现相同的功能呢,用人会么,梦巜人生 的答案我也不怎么满意
和我很雷同啊,
lzj203355 的最后个方法也还行,但是要求是我只要输入一个参数查询所有字段
用.find方法的,这样查询是需要指定类型的,
楼下答案都不符合要求,正确的是这样
getHibernateTemplate().find("from Note as n where n.title like ? or n.content like ? or n.author like ?",
new Object[]{keywords, keywords,keywords}, new Type[]{Hibernate.STRING, Hibernate.STRING,Hibernate.STRING}); 展开
public List queryByLike(String cond) throws Exception {
List all = null;
String hql = "from Note as n where n.title LIKE ? or n.author LIKE ? or n.content LIKE ?";
Query q = this.session.createQuery(hql);
q.setString(0,"%"+cond+"%");
q.setString(1,"%"+cond+"%");
q.setString(2,"%"+cond+"%");
all = q.list();
this.session.close();
return all;
}
这个是我以前用session写的,但是现在要用geiHibernateTemplate模板里面的方法写,要实现相同的功能呢,用人会么,梦巜人生 的答案我也不怎么满意
和我很雷同啊,
lzj203355 的最后个方法也还行,但是要求是我只要输入一个参数查询所有字段
用.find方法的,这样查询是需要指定类型的,
楼下答案都不符合要求,正确的是这样
getHibernateTemplate().find("from Note as n where n.title like ? or n.content like ? or n.author like ?",
new Object[]{keywords, keywords,keywords}, new Type[]{Hibernate.STRING, Hibernate.STRING,Hibernate.STRING}); 展开
6个回答
展开全部
当然可以,下面是我用的一个方法,你研究下
public List<SyNewsKhzx> findSyNewsKhzxByUserId(int page, int pageSize,
final int userId) {
final String hql = "from SyNewsKhzx as s where s.syMyzsxx.id = ? order by s.id desc";
final int rsStart = (page - 1) * pageSize;
final int rsEnd = pageSize;
List list = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setInteger(0, userId);
query.setFirstResult(rsStart);
query.setMaxResults(rsEnd);
List list = query.list();
return list;
}
});
return list;
}
public List<SyNewsKhzx> findSyNewsKhzxByUserId(int page, int pageSize,
final int userId) {
final String hql = "from SyNewsKhzx as s where s.syMyzsxx.id = ? order by s.id desc";
final int rsStart = (page - 1) * pageSize;
final int rsEnd = pageSize;
List list = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setInteger(0, userId);
query.setFirstResult(rsStart);
query.setMaxResults(rsEnd);
List list = query.list();
return list;
}
});
return list;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接在里面getSession().createQuery(hql);
或者:Session session= getHibernateTemplate().getSessionFactory().openSession();//也能获得session
session.createQuery(hql);
或者你不嫌麻烦可以这样:
getHibernateTemplate().execute(new HibernateCallback(){
public List doInHibernate(Session session)//参数是session 也是万能的方法
throws HibernateException, SQLException {
Query query= session.createQuery(hql);
return query.list();
}
});
最后一个最简单:
String hql="from Note as n where n.title LIKE ? or n.author LIKE ? or n.content LIKE ?";
String[] s={"%1%","%2%","%3%"}; //每个元素代表一个?号的值 你都想用一样的 那么就={"%你要放的值%","%你要放的值%","%你要放的值%"};
getHibernateTemplate().find(hql, s);
或者:Session session= getHibernateTemplate().getSessionFactory().openSession();//也能获得session
session.createQuery(hql);
或者你不嫌麻烦可以这样:
getHibernateTemplate().execute(new HibernateCallback(){
public List doInHibernate(Session session)//参数是session 也是万能的方法
throws HibernateException, SQLException {
Query query= session.createQuery(hql);
return query.list();
}
});
最后一个最简单:
String hql="from Note as n where n.title LIKE ? or n.author LIKE ? or n.content LIKE ?";
String[] s={"%1%","%2%","%3%"}; //每个元素代表一个?号的值 你都想用一样的 那么就={"%你要放的值%","%你要放的值%","%你要放的值%"};
getHibernateTemplate().find(hql, s);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
话说今天刚刚做过- -。发现不能用%%但是可以这样:(其实跟Query很相似)
this.getHibernateTemplate().findByNamedParam("select count(*) from table t where t.col like :keyword", "keyword", "%" + kw + "%");
this.getHibernateTemplate()除了find外,可以用findByNameParam来进行模糊查询
有啥问题联系,至少我可以这样查出结果来~
this.getHibernateTemplate().findByNamedParam("select count(*) from table t where t.col like :keyword", "keyword", "%" + kw + "%");
this.getHibernateTemplate()除了find外,可以用findByNameParam来进行模糊查询
有啥问题联系,至少我可以这样查出结果来~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String hql = "from Note as n where n.title LIKE %:title% or n.author LIKE %:author% or n.content LIKE %:content%";
q.setString("title",cond);
补充~~~~~~~~~~~~~~~~~~~~~~~~
这个是hibernate的hql里面的一种实现可变参数的方法,它比?要直接方便,不容易出错。在hql里面用“:name”来代替一个“?”,然后在设置值的时候直接使用setString("name",name)来实现,减少错误的发生
q.setString("title",cond);
补充~~~~~~~~~~~~~~~~~~~~~~~~
这个是hibernate的hql里面的一种实现可变参数的方法,它比?要直接方便,不容易出错。在hql里面用“:name”来代替一个“?”,然后在设置值的时候直接使用setString("name",name)来实现,减少错误的发生
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
getHibernateTemplate.find("select so from SalesOrder so where so.sid like '%aaa%'");
或者可以试试QBE
或者可以试试QBE
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询