关键词:
package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projection; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Property; import org.hibernate.criterion.Restrictions; import cn.itcast.h3.query.hql.vo.StudentModel; import cn.itcast.h3.query.hql.vo.TeacherModel; import cn.itcast.util.HibernateUtil; //Criteria查询(QBC) public class CriteriaApp { // 简单查询 void testSimpleCriteria() { Session s = HibernateUtil.getSession(); Criteria c = s.createCriteria(TeacherModel.class); List<TeacherModel> queryList = c.list(); for (TeacherModel tm : queryList) { System.out.println(tm); } s.close(); } // 查询排序 void testCriteriaOrder() { Session s = HibernateUtil.getSession(); Criteria c = s.createCriteria(StudentModel.class); c.addOrder(Order.asc("age")); c.addOrder(Order.desc("studentName")); List<StudentModel> queryList = c.list(); for (StudentModel tm : queryList) { System.out.println(tm); } s.close(); } // 按条件查询 void testCriteriaCondition() { Session s = HibernateUtil.getSession(); Criteria c = s.createCriteria(StudentModel.class); // 从上向下,全部默认为并且关系 // c.add(Restrictions.like("studentName", "%虎%")); // c.add(Restrictions.gt("age", 22)); // 使用关系描述条件 // c.add(Restrictions.or(Restrictions.like("studentName", "%虎%"), // Restrictions.lt("age", 22))); // c.add( // Restrictions.and( // Restrictions.eq("aa", 123), // Restrictions.and( // Restrictions.lt("aa", 232), // Restrictions.eq("", 123) // ) // ) // ); List<StudentModel> queryList = c.list(); for (StudentModel tm : queryList) { System.out.println(tm); } s.close(); } // 链式风格 void testCriteriaLink() { Session s = HibernateUtil.getSession(); Criteria c = s.createCriteria(StudentModel.class); c.add(Restrictions.like("studentName", "%虎%")).add( Restrictions.gt("age", 22)); List<StudentModel> queryList = c.list(); for (StudentModel tm : queryList) { System.out.println(tm); } s.close(); } // 投影风格 void testCriteriaShadow() { Session s = HibernateUtil.getSession(); Criteria c = s.createCriteria(StudentModel.class); // 投影单个字段 // c.setProjection(Property.forName("age")); // List<Integer> queryList = c.list(); // for (Integer age : queryList) { // System.out.println(age); // } // 投影多个字段 c.setProjection( Projections.projectionList() .add(Property.forName("studentName")) .add(Property.forName("age")) ); List<Object[]> queryList =c.list(); for(Object[] objs:queryList){ for(Object obj:objs){ System.out.println(obj); } System.out.println("----------------"); } s.close(); } //多表关联查询 void testMulQuery(){ Session s = HibernateUtil.getSession(); Criteria c = s.createCriteria(StudentModel.class); c.createAlias("teacher", "t"); c.add(Restrictions.eq("t.teacherName", "李若亮")); List<StudentModel> queryList = c.list(); for (StudentModel tm : queryList) { System.out.println(tm); } s.close(); } //离线查询DetachedCriteria void testDetachedCriteria(){ DetachedCriteria dc = DetachedCriteria.forClass(StudentModel.class); dc.createAlias("teacher", "t"); dc.add(Restrictions.eq("t.teacherName", "雅典娜")); //..一路传递到数据层 Session s = HibernateUtil.getSession(); Criteria c = dc.getExecutableCriteria(s); List<StudentModel> queryList = c.list(); for (StudentModel tm : queryList) { System.out.println(tm); } s.close(); } public static void main(String[] args) { new CriteriaApp().testDetachedCriteria(); } }
hibernate框架学习之数据查询(hql)
lHibernate共提供5种查询方式?OID数据查询方式?HQL数据查询方式?QBC数据查询方式?本地SQL查询方式?OGN数据查询方式OID数据查询方式l前提:已经获取到了对象的OIDl查询:基于OID,使用get/load方法查询对应的数据l作用:使用OID获取对应... 查看详情
hibernate框架学习之增删改查helloworld
插入数据删除数据修改数据查询单条数据查询多条数据HelloWorldApp.javapackagecn.itcast.h3.helloworld;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.Configur 查看详情
hibernate框架学习之使用sqlquery查询数据
SQLQuery对象的获取 Hibernate支持使用原生SQL语句进行查询,通过session对象获得SQLQuery对象进行,需要传入SQL语句 SQLQuerycreateSQLQuery(StringsqlStr) SQLQueryquery=session.createSQLQuery(“select*fromtbl_user");sqlStr是满足SQL语法规则的字符... 查看详情
hibernate框架学习之数据查询(hql)helloworld
packagecn.itcast.h3.hql;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importcn.itcast.h3.hql.vo.StudentModel;importcn.itcast.h3.hql.vo.TeacherModel;importcn.itcast.h3.util 查看详情
hibernate框架学习之多表查询helloworld
packagecn.itcast.h3.hql;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importcn.itcast.h3.hql.vo.StudentModel;importcn.itcast.h3.hql.vo.TeacherModel;importcn.itcast.h3.util 查看详情
hibernate框架学习之数据模型-pojo
Hibernate数据模型用于封装数据,开发时候需要遵从如下规范:1)提供公共无参的构造方法(可使用自动生成的)如果使用投影技术,一定要显式声明公共无参的构造方法2)提供一个标识属性,作为对象的主键,映射数据库表主键... 查看详情
hibernate框架学习之持久化对象oid
...相同2)Java语言中使用对象的内存地址区分对象是否相同3)Hibernate中使用OID区分对象是否相同Hibernate认为每一个不同的对象应该具有一个唯一的标识,称这个标识为OID;为了使数据模型与数据库表一样使用主键来进行数据的区分,... 查看详情
hibernate框架学习之核心api
...SessionTransactionQueryCriteriaConfigurationConfiguration对象用于封装Hibernate的配置信息,在Hibernate框架启动后,需要装载对应的配置文件。Hibernate的配置文件有两种格式hibernate.properties文件(早期格式)hibernate.cfg.xml文件( 查看详情
java学习之hibernate框架使用
Java学习之Hibernate框架使用0x00前言以我看来Hibernate的使用频率其实还是比较可观的,但都说Hibernate比较笨重,这里来学习一波,做个简单记录。0x01使用流程流程1、导⼊相关依赖2、创建Hibernate配置⽂件3、创建实体类4、创建实体... 查看详情
hibernate框架学习之核心配置文件
hibernate.cfg.xml<?xmlversion=‘1.0‘encoding=‘utf-8‘?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration 查看详情
hibernate框架学习之主键生成策略generator
1)手工控制assigned(不限制类型)2)数据库自动生成uuid(字符串类型)increment(整型数值类型)identity(整型数值类型)sequence(整型数值类型)native(整型数值类型)assigned策略是由程序员手工控制输入数据模型OID的一种id生成策略assigned策略不... 查看详情
hibernate框架学习之对象状态
Hibernate对象共有三种状态瞬时状态:瞬时对象持久化状态:持久化对象托管状态:托管对象瞬时对象(TransientObject),简称TO瞬时对象指的是应用程序创建出来的对象,并且未受到Hibernate控制,一旦Hibernate控制了该对象,具有了OID... 查看详情
hibernate框架学习之对象状态
lHibernate对象共有三种状态?瞬时状态:瞬时对象?持久化状态:持久化对象?托管状态:托管对象l瞬时对象(TransientObject),简称TOl瞬时对象指的是应用程序创建出来的对象,并且未受到Hibernate控制,一旦Hibernate控制了该对象,具有... 查看详情
小白学习之hibernate学习总结
一、关于hibernate1. hibernate是什么? Hibernate是使用在三层架构中的dao层的一个轻量级框架,与JDBC和myBatis是类似的技术,它也是基于ORM(对象关系映射:数据表中的字段和实体类中的属性一一对应)设计的,其实就... 查看详情
hibernate查询方式(hql/qbc/qbe)汇总
...库持久化层所做出的贡献有目共睹。 它所提供的数据查询方式也越来越丰富,从SQL到自创的HQL,再到面向对象的标准化查询。 虽然查询方式有点眼花缭乱,配置使用起来也稍微有点复杂。 但是丝毫掩盖... 查看详情
hibernate学习之hql与sql
Hibernate中查询: createQuery(StringqlString)使用的是HQL语句; createNativeQuery(StringsqlString)使用的是SQL语句; 关系HQL与SQL区别: HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式... 查看详情
hibernate怎么用查询
刚开始学HIBERNATE不懂1:hibernate数据查询方式:有HQL方式,QBC方式,原生SQL方式。HQL适合静态查询,QBC则适合较多的动态查询。A:HQL方式,支持条件查询,连接查询,分页查询,分组查询,内置函数和自定义函数查询(SUN(),MIN(),M... 查看详情
hibernate学习之单向多对一映射
?版权声明:本文为博主原创文章,转载请注明出处说明:该实例是通过映射文件和注解两种方式实现的。可根据自己的需要选择合适的方式实例:1.项目结构2.pom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/200... 查看详情