HQL查询在其中一个参数传入一个list的时候如何对该list做模糊查询呢?

HQL查询在其中一个参数传入一个list的时候如何对该list做模糊查询呢?,第1张

一、绑定参数法:
Sql代码
Session session=HibernateUtilgetSessionFactory
()getCurrentSession();
sessionbeginTransaction();
String strSQL="from Classes as a where aclassno like :name";
Query query = sessioncreateQuery(strSQL);
querysetString("name", "%"+OId+"%");
List result=querylist();
[sql] view plaincopyprint
Session session=HibernateUtilgetSessionFactory
()getCurrentSession();

sessionbeginTransaction();

String strSQL="from Classes as a where aclassno like :name";

Query query = sessioncreateQuery(strSQL);

querysetString("name", "%"+OId+"%");

List result=querylist();
Session session=HibernateUtilgetSessionFactory
()getCurrentSession();
sessionbeginTransaction();
String strSQL="from Classes as a where aclassno like :name";
Query query = sessioncreateQuery(strSQL);

querysetString("name", "%"+OId+"%");

List result=querylist();
二、在面向对象的查询语言 HQL 中
Sql代码
Session session = HibernateUtilgetSessionFactory()getCurrentSession();
sessionbeginTransaction();
List result=sessioncreateQuery("from Classes as a where aclassno
like " '%"+OId+"%'")list();
[sql] view plaincopyprint
Session session = HibernateUtilgetSessionFactory()getCurrentSession();

sessionbeginTransaction();

List result=sessioncreateQuery("from Classes as a where aclassno

like " '%"+OId+"%'")list();
Session session = HibernateUtilgetSessionFactory()getCurrentSession();

sessionbeginTransaction();
List result=sessioncreateQuery("from Classes as a where aclassno
like " '%"+OId+"%'")list();
三、模糊查询参数化
Sql代码
Session session=HibernateUtilgetSessionFactory()getCurrentSession();
sessionbeginTransaction();
List result=sessioncreateQuery("from Classes as a where aclassno
like :name")setParameter("pid",OId)list();
[sql] view plaincopyprint
Session session=HibernateUtilgetSessionFactory()getCurrentSession();

sessionbeginTransaction();

List result=sessioncreateQuery("from Classes as a where aclassno

like :name")setParameter("pid",OId)list();

那么多人说了半天都没有解决楼主所提问题,实际上这个问题我已经说个多次了,现在让我再一次来回复楼主的问题吧:使用HQL语句来完成插入 *** 作是不能实现的,不管你使用insert intovalues还是insert intoselect都不行原因:因为Hibernate的HQL语言是用于面向对象实现查询功能的,然而在插入 *** 作中是不会牵涉任何查询动作的,所以HQL不能用于insert语句的插入 *** 作,而select、update、delete语句都可以有可能的查询实现,比如: select语句时标准的查询,这个就不用再说了 update语句:update 对象名 setwhere delete语句:delete from 对象名 where 看到了没有,update与delete牵涉到where的查询筛选过程,这个过程是需要采用HQL来实现的,然而insert永远牵涉不到查询筛选过程,所以Hibernate没有对插入做insert实现大家注意回答问题的时候要针锋相对,不要大非所问,比如楼主问能否采用HQL实现插入动作,你们就不要再要求楼主直接调save方法,也不要再说用本地SQL实现之类的,很明显这些楼主都是知道的,不用你来提醒别人应该怎么做,不应该怎么做。搞不懂为什么有那么多人说HQL可以,说着这句话的人请你们动动脑子,如果不想动脑子自己动手试一下也可以看出问题嘛,不要张开嘴就乱说一通,误人子弟。

那就写一个添加语句了,你是打算使用接收来的值作为参数传过去新建对象对吧。$接收的对象一般是在session或者request中,写一个save方法,新建想要save的空对象,将$接收的对象作为参数给对象赋值,然后save。只要在内置对象中就可以获取到值

和SQL语句大同小异吧,用到时候上网查吧。常用的基本也就是增删改查,记住就够了,别的到时候在查吧,现在好多持久层都用ibatis或者mybatis这样的半封装框架,自己写SQL语句,处理起来更灵活

/
将pojo数据保存到数据库
@throws DataAccessException
/
public void save(Object object) throws DataAccessException {
getHibernateTemplate()save(object);
}
/
(non-Javadoc)

@see comstockmanagedaoIDao#update(javalangObject)
/
/
将pojo数据更新到数据库
@throws DataAccessException
/
public void update(Object object) throws DataAccessException {
getHibernateTemplate()update(object);
}
/
保存或更新pojo数据到数据库
@throws DataAccessException
/
public void saveorupdate(Object object)throws DataAccessException{
getHibernateTemplate()saveOrUpdate(object);
}
/
(non-Javadoc)

@see comstockmanagedaoIDao#delete(javalangObject)
/
/
根据pojo数据删除数据库中的数据
@throws DataAccessException
/
public void delete(Object object) throws DataAccessException {
getHibernateTemplate()delete(object);
}
/
(non-Javadoc)

@see comstockmanagedaoIDao#findById(javalangClass,
javaioSerializable)
/
/
根据id查找数据
@throws DataAccessException
@return 返回根据id查询到的pojo对象
/
@SuppressWarnings("unchecked")
public Object findById(Class clazz, Serializable id)
throws DataAccessException {
Object object = getHibernateTemplate()get(clazz, id);
return object;
}
/
(non-Javadoc)

@see comstockmanagedaoIDao#findByHql(javalangString)
/
/
根据hql语句查询数据
@throws DataAccessException
@return 返回根据hql语句查询到的pojo对象
/
@SuppressWarnings("unchecked")
public List findByHql(String hql) throws DataAccessException {
List<Object> list = getHibernateTemplate()find(hql);
return list;
}
/
(non-Javadoc)

@see comstockmanagedaoIDao#findByCriteria(orghibernatecriterionDetachedCriteria)
/
/
根据criteria条件查询数据
@throws DataAccessException
@return 返回根据criteria条件查询到的pojo对象
/
@SuppressWarnings("unchecked")
public List findByCriteria(DetachedCriteria criteria)
throws DataAccessException {
List<Object> list = getHibernateTemplate()findByCriteria(criteria);
return list;
}
/
(non-Javadoc)

@see comstockmanagedaoIDao#findByExample(javalangObject)
/
/
根据pojo对象查询数据
@throws DataAccessException
@return 返回根据pojo对象查询到的pojo对象
/
@SuppressWarnings("unchecked")
public List findByExample(Object object) throws DataAccessException {
List list = getHibernateTemplate()findByExample(object);
return list;
}
/
根据sql语句查询封装为对象的数据集合
@throws DataAccessException
@return 返回根据sql语句查询到的数据集合
/
@SuppressWarnings("unchecked")
public List findBySql(final String sql,final Class entity) throws DataAccessException{
return (List) getHibernateTemplate()execute(new HibernateCallback(){
public List doInHibernate(Session session)
throws HibernateException, SQLException {

SQLQuery query = sessioncreateSQLQuery(sql);
for (Class clazz : entity) {
query = queryaddEntity(clazz);
}
List list = querylist();
return list;
}
});
}
/
根据sql语句查询数据
@throws DataAccessException
@return 返回根据sql语句查询到的数据集合
/
@SuppressWarnings("unchecked")
public List findBySql(final String sql) throws DataAccessException{
return (List) getHibernateTemplate()execute(new HibernateCallback(){
public List doInHibernate(Session session)
throws HibernateException, SQLException {
List list = sessioncreateSQLQuery(sql)list();
return list;
}
});
}
以上是hibernet的数据库 *** 作基类。有疑问请追问。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13328784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-15
下一篇 2023-07-15

发表评论

登录后才能评论

评论列表(0条)

保存