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);
}
}