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});
展开
 我来答
pa...4@qq.com
2008-11-11 · TA获得超过556个赞
知道小有建树答主
回答量:462
采纳率:0%
帮助的人:279万
展开全部
当然可以,下面是我用的一个方法,你研究下
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzj203355
推荐于2016-10-15 · TA获得超过2022个赞
知道小有建树答主
回答量:3147
采纳率:100%
帮助的人:1006万
展开全部
直接在里面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);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奚大绅士S11
2012-04-10 · TA获得超过352个赞
知道小有建树答主
回答量:430
采纳率:0%
帮助的人:171万
展开全部
话说今天刚刚做过- -。发现不能用%%但是可以这样:(其实跟Query很相似)
this.getHibernateTemplate().findByNamedParam("select count(*) from table t where t.col like :keyword", "keyword", "%" + kw + "%");
this.getHibernateTemplate()除了find外,可以用findByNameParam来进行模糊查询
有啥问题联系,至少我可以这样查出结果来~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ef10e91
2008-11-11 · TA获得超过1822个赞
知道大有可为答主
回答量:1223
采纳率:50%
帮助的人:1285万
展开全部
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)来实现,减少错误的发生
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kct999
2008-11-11 · 超过30用户采纳过TA的回答
知道答主
回答量:195
采纳率:100%
帮助的人:129万
展开全部
getHibernateTemplate.find("select so from SalesOrder so where so.sid like '%aaa%'");

或者可以试试QBE
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式