Hibernate查询方式

1:SessionFactory获取

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
	private static SessionFactory factory;
	private HibernateUtil() {
	}
	static {
		Configuration cfg = new Configuration().configure();
		
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(cfg.getProperties()).buildServiceRegistry();
		factory = cfg.buildSessionFactory(serviceRegistry);
	}
	public static SessionFactory getSessionFactory(){
		return factory;
	}
	public static Session getSession(){
		return factory.openSession();
	}
}

2:查询

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import com.xxy.entity.User;
import com.xxy.util.HibernateUtil;

/**
 * hibernate的三种查询方式
 * 1.原生的sql 2.HQL 通过Hibernate提供的查询语言进行查询。Hibernate Query lanague 3.QBC(query by
 * cretira)通过Cretira接口进行查询
 */
public class TestQuery {

	// 1.原生sql
	@Test
	public void test11() {
		Session session = HibernateUtil.getSession();
		String sql = "select * from Tuser ";
		List<Object[]> list = session.createSQLQuery(sql).list();
	}

	// 2.原生sql
	@Test
	public void test12() {
		Session session = HibernateUtil.getSession();
		String sql = "select * from Tuser ";
		SQLQuery query = session.createSQLQuery(sql);
		// 给结果集设置 对象类型
		query.addEntity(User.class);
		// 获取结果集
		List<User> list = query.list();
	}

	// 3.原生sql
	@Test
	public void test13() {
		Session session = HibernateUtil.getSession();
		SQLQuery query = session.createSQLQuery(" select * from Tuser where user_ids = ? ");
		// 特别注意:hibernate参数是从 0 开始
		query.setInteger(0, 20);
		// 给结果集设置 对象类型
		query.addEntity(User.class);
		// 获取结果对象,一般在只有一条数据的情况下使用
		User user = (User) query.uniqueResult();
	}

	// 4.原生sql
	@Test
	public void test14() {
		Session session = HibernateUtil.getSession();
		SQLQuery query = session.createSQLQuery("select user_age from Tuser where user_ids = ?");
		// 特别注意:hibernate参数是从 0 开始
		query.setInteger(0, 20);
		// 获取结果对象,一般在只有一条数据的情况下使用
		BigDecimal age = (BigDecimal) query.uniqueResult();
		Integer a = age.intValue();
	}

	// 5.原生sql
	@Test
	public void test15() {
		Session session = HibernateUtil.getSession();
		SQLQuery query = session.createSQLQuery("select user_name from Tuser where user_ids = ?");
		// 特别注意:hibernate参数是从 0 开始
		query.setInteger(0, 20);
		// 获取结果对象,一般在只有一条数据的情况下使用
		String name = (String) query.uniqueResult();
	}

	@Test
	public void test16() {
		Session session = HibernateUtil.getSession();
		String sql = "select * from Tuser where 1=1 ";
		SQLQuery query = session.createSQLQuery("");
		query.addEntity(User.class);
		int size = query.list().size();
		query.setFirstResult(0);
		query.setMaxResults(10);
		List<User> data = query.list();
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("rows", data);
		map.put("total", size);
		System.out.println("total:" + size);
		for (User user : data) {
			System.out.println(user);
		}
	}

	// ---------------------------------2.HQL 通过Hibernate提供的查询语言进行查询。Hibernate Query lanague
	@Test
	public void test21() {
		Session session = HibernateUtil.getSession();
		List<User> list = session.createQuery(" from User ").list();
	}

	// hql 的条件中用的是 对象的属性,而不是 数据库字段
	@Test
	public void test22() {
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery(" from User u where u.name = ?");
		query.setString(0, "魏慧");
		List<User> list = query.list();
	}

	// 一条语句
	@Test
	public void test23() {
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery(" from User u where u.id = ?");
		query.setInteger(0, 13);
		User user = (User) query.uniqueResult();
	}

	// 多个字段查询
	@Test
	public void test24() {
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery("select id,name,age,birthday,address from User u where u.id = ?");
		query.setInteger(0, 13);
		Object[] objs = (Object[]) query.uniqueResult();
		System.out.println(Arrays.toString(objs));
	}

	// 单个字段查询
	@Test
	public void test25() {
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery("select name from User u where u.id = ?");
		query.setInteger(0, 13);
		String name = (String) query.uniqueResult();
	}

	// 复杂
	@Test
	public void test26() {
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery(" from User u where u.name like ? ");
		query.setString(0, "%韩%");
		List<User> list = query.list();
	}

	// 分组查询
	@Test
	public void test27() {
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery("select address,count(*) from User u  group by u.address having count(*)>15");
		List<Object[]> list = query.list();
	}

	// 将sql放入 hbm文件中
	@Test
	public void test28() {
		Session session = HibernateUtil.getSession();
		List<User> list = session.getNamedQuery("mysqls").list();
		for (User user : list) {
			System.out.println(user);
		}
	}

	@Test
	public void test29() {
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery("from User");
		int size = query.list().size();
		query.setFirstResult(0);
		query.setMaxResults(10);
		List<User> data = query.list();
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("rows", data);
		map.put("total", size);
	}

	// ------------------------------------3.QBC(query by cretira)通过Cretira接口进行查询
	@Test
	public void test31() {
		Session session = HibernateUtil.getSession();
		List<User> list = session.createCriteria(User.class).list();
	}

	@Test
	public void test32() {
		Session session = HibernateUtil.getSession();
		Criteria criteria = session.createCriteria(User.class);
//		criteria.addOrder(Order.desc("age"));
		criteria.addOrder(Order.asc("age"));
		List<User> list = criteria.list();
	}

	@Test
	public void test33() {
		Session session = HibernateUtil.getSession();
		Criteria criteria = session.createCriteria(User.class);
		// 添加条件 Restrictions
		criteria.add(Restrictions.eq("address", "去去去"));
		criteria.add(Restrictions.like("name", "%钱%"));
		criteria.add(Restrictions.gt("age", 40));
		criteria.addOrder(Order.asc("age"));
		List<User> list = criteria.list();
	}

	@Test
	public void test34() {
		Session session = HibernateUtil.getSession();
		Criteria criteria = session.createCriteria(User.class);
		int size = criteria.list().size();
		criteria.setFirstResult(0);
		criteria.setMaxResults(10);
		List<User> data = criteria.list();
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("rows", data);
		map.put("total", size);
		System.out.println("total:" + size);
	}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值