打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
浅谈Hibernate
1.查询对象:Query有org.hibernate.query和javax.persistence.query,用法如下


如果按条件查找



2.占位符:比如下面的例子:min和:max,和query.setParameter(key,value);


链式的也可以,同时这里setParameter("","")是会自动设置参数的值,如果知道传入的类型可以setInteger..



3.分页效果
通过query.setMaxResult(n).setFirstResult(m)取出m~n之间的记录

setFirstResult(m):选择从第几行开始取,默认是row0
setMaxResult(n):决定取出多少条记录,默认是往后所有rows


和下面普通的ql语句实现一样


4.获取子属性
Query query=session.createQuery("from Score swhere s.xxx.id=..")


同时也可以把临时对象取出来放到Object或者自己建立的辅助类里去
1.Query query=session.createQuery("select s.name,c.name fromStudent s,Course c where s.id=.. and c.id=..")
2.Query query=session.createQuery("select new VObj(s.name,c.name)from Student s,Course c where s.id=.. and c.id=..")

取出部分属性封装成一个新的对象是不可取的,最好完整的取出整个属性以保证他逻辑的关联性
如果要取出就这样取



5.单个对象匹配
如果你知道取出的是唯一的一个对象,那么就不用query.list(),要用query.uniqueResult();效率比较高



count(*)返回的是一个long类型


in


Group by
select avg(s.age) from Student group by s.col;

having
select count(*)  from Student s where group bys.col having count(*)>3;
空值Empty:下面是学生类(Student)中有Set<Course>courses属性(学生所选课程) 选出哪些选课为空的学生


Like: %多个 ; _ 一个


distinct





6.可以把QL语句放在一起,以便维护修改用@NamedQueries和@NamedQuery,调用的时候用session.getNamedQuery(QueryName)




7.使用数据库自身语言
如果用hql解决不了问题,那就用sql语言来解决,通过createSQLQuery()来搜索表,并用addEntity(xx.Class)转换成对象


当然这也可以用命名的Query



8.批量删除:通过query.executeQuery();return一个int类型,返回update和delete成功的行数






本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解
宝宝 Hibernate学习总结
HQL查询语言(面向对象的语言,总结得好全)
Hibernate HQL查询解析
HQL知识
Hibernate中用HQL执行查询
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服