hibernate Criteria(QBC)
【基本查询】
Criteria criteria = session.createCriteria(Customer.class);
List<Customer> list = criteria.list()
【条件查询】
Criteria criteria = session.createCriteria(Customer.class);
criteria.add(Restrictions.eq("cust_id",1l)
Customer customer = (Customer) criteria.uniqueResult()
//条件函数:(>:gt)(>=:ge)(<:lt)(<=:le)(==:eq)(!=:ne)(in:in)(between and:between)(like:like)(is not null:isNotNull)(or:or)(and:and)
【分页查询】
Criteria criteria = session.createCriteria(Customer.class);
criteria.setFirstResult(1)
criteria.setMaxResult(1)
List<Customer> list = criteria.list()
【统计查询】
Criteria criteria = session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount)
Long count = (Long) criteria.uniqueResult()
【离线查询】(不只是固定到dao层,不用session创建)
//web层
DetachedCriteria dc = DetachedCriteria.forClass(Customer.class)
dc.add(Restrictions.idEq(6l))
//dao层
Criteria c = dc.getExecutableCriteria(session)
List list = c.list()
条件查询Restrictions方法如下
离线Criteria查询
Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需Session,DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name)进行DetachedCriteria 实例的创建。最重要的一点是Criteria只能存在dao层,因为是session创建,所以位置很固定,但是DetachedCriteria不一样,DetachedCriteria不依赖任何对象就可以创建,所以DetachedCriteria可以出现在web层或者service层,这就是DetachedCriteria比Criteria要灵活的地方。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架