用户登录
用户注册

分享至

hibernate查询数据

  • 作者: 土豆土豆土豆我叫土豆
  • 来源: 51数据库
  • 2020-10-02

Hibernate查询所有数据的操作方式有三种。

1、Query

(1)使用该方法查询时,不需要编写sql语句,但是需要编写hql(Hibernate Query Language)语句,该语句是Hibernate查询语言。

(2)hql语言操作的是实体类和实体类的属性,比如查询所有数据的hql语句为:from 实体类名称。

(3)使用方法:首先创建Query对象,然后调用该对象的List方法返回数据集合。

@Test

public void test11(){

SessionFactory sessionFactory = null;

Session session = null;

Transaction tx = null;

try {

sessionFactory = HibernateUtils.getFactory();

session = sessionFactory.getCurrentSession();

tx = session.beginTransaction();

/**

* 使用session对象的createQuery方法创建Query对象。

* 参数为hql语句

* 使用QUERY对象的list方法获取数据集合

*/

Query query =session.createQuery("from UserEntity");

List<UserEntity> list = query.list();

//使用forEach遍历集合

for (UserEntity userEntity : list) {

System.out.println(userEntity);

}

tx.commit();

} catch (Exception e) {

tx.rollback();

}finally{

sessionFactory.close();

}

}

2、criteria

(1)使用该对象不需要写hql语句,只需要指定实体类。

(2)使用方法:首先创建criteria对象,然后调用list返回数据集合。

@Test

public void test12(){

SessionFactory sessionFactory = null;

Session session = null;

Transaction tx = null;

try {

sessionFactory = HibernateUtils.getFactory();

session = sessionFactory.getCurrentSession();

tx = session.beginTransaction();

/**

* 使用session对象的createCriteria方法创建criteria对象。

* 使用criteria对象的list方法获取数据集合

*/

Criteria criteria =session.createCriteria(UserEntity.class);

List<UserEntity> list = criteria.list();

//使用forEach遍历集合

for (UserEntity userEntity : list) {

System.out.println(userEntity);

}

tx.commit();

} catch (Exception e) {

tx.rollback();

}finally{

sessionFactory.close();

}

}

3、SQLQuery

(1)使用该对象,需要写底层的SQL语句。

(2)实现方法:首先创建该对象,然后调用list。

@Test

public void test13(){

SessionFactory sessionFactory = null;

Session session = null;

Transaction tx = null;

try {

sessionFactory = HibernateUtils.getFactory();

session = sessionFactory.getCurrentSession();

tx = session.beginTransaction();

/**

* 使用session对象的createSQLQuery方法创建SQLQuery对象。

* 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组

*/

SQLQuery qQLQuery =session.createSQLQuery("select * from t_user");

List<Object[]> list = qQLQuery.list();

//使用forEach遍历集合

for (Object[] objects : list) {

System.out.println(Arrays.toString(objects));

}

tx.commit();

} catch (Exception e) {

tx.rollback();

}finally{

sessionFactory.close();

}

}

(3)数组转换成对象

@Test

public void test13(){

SessionFactory sessionFactory = null;

Session session = null;

Transaction tx = null;

try {

sessionFactory = HibernateUtils.getFactory();

session = sessionFactory.getCurrentSession();

tx = session.beginTransaction();

/**

* 使用session对象的createSQLQuery方法创建SQLQuery对象。

* 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组

*/

SQLQuery qQLQuery =session.createSQLQuery("select * from t_user");

//将数组装载进实体中

qQLQuery.addEntity(UserEntity.class);

List<UserEntity > list = qQLQuery.list();

//使用forEach遍历集合

for (UserEntity userEntity : list) {

System.out.println(userEntity);

}

tx.commit();

} catch (Exception e) {

tx.rollback();

}finally{

sessionFactory.close();

}

}


软件
前端设计
程序设计
Java相关