package cn.itheima.demo;
import java.util.Arrays;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import cn.itheima.domain.Customer;
import cn.itheima.utils.HibernateUtils;
public class Demo {
@Test
public void func_1() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer c = new Customer(); // 没有与sesson关联 顺势状态
c.setCust_name("联想");// 顺势状态
session.save(c);// 持久化状态 有id 与session关联
tx.commit();
session.close();// 有id 无session 游离 托管状态
}
@Test
public void fun() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer customer = session.get(Customer.class, 2l);
customer.setCust_name("微软");
tx.commit();
session.close();// 有id 无session 游离 托管状态
}
@Test
public void fun2() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer customer = session.get(Customer.class, 2l);
Customer customer1 = session.get(Customer.class, 2l);
Customer customer2 = session.get(Customer.class, 2l);
Customer customer3 = session.get(Customer.class, 2l);
Customer customer4 = session.get(Customer.class, 2l);
System.out.println(customer == customer2);
tx.commit();
session.close();// 有id 无session 游离 托管状态
}
@Test
public void fun3() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer c = session.get(Customer.class, 2l);
c.setCust_name("我的公司");
c.setCust_name("mdseufhs");
c.setCust_name("我的公司");
tx.commit();
session.close();// 有id 无session 游离 托管状态
}
@Test
public void fun4() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer c = new Customer();
c.setCust_id(2l);
session.update(c);
Customer c2 = session.get(Customer.class, 2l);
System.out.println(c2.toString());
tx.commit();
session.close();// 有id 无session 游离 托管状态
}
@Test
public void fun5() {
Session session = HibernateUtils.getCurrentSession();
Session session2 = HibernateUtils.getCurrentSession();
System.out.println(session == session2);
Session session3 = HibernateUtils.openSession();
System.out.println(session == session3);
}
@Test
public void fun6() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
String hql = "from Customer";
Query query = session.createQuery(hql);
List<Customer> list = query.list();
System.out.println(list.toString());
tx.commit();
session.close();// 有id 无session 游离 托管状态
}
// HQL条件查询
@Test
public void fun7() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// String hql = "from Customer where cust_id=2";
String hql = "from Customer where cust_id=:cust_id";
Query query = session.createQuery(hql);
// query.setLong(0, 2l);
// query.setParameter(0, 2l);
query.setParameter("cust_id", 2l);
// List<Customer> list = query.list();
Customer c = (Customer) query.uniqueResult();
System.out.println(hql);
System.out.println(c.toString());
tx.commit();
session.close();// 有id 无session 游离 托管状态
}
//分页查询
@Test
public void func8(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
String hql = "from Customer";
Query query = session.createQuery(hql);
query.setFirstResult(0);
query.setMaxResults(5);
List<Customer> list = query.list();
System.out.println(list);
tx.commit();
session.close();
}
//测试ceriteria 普通查询
@Test
public void func9(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria createCriteria = session.createCriteria(Customer.class);
List<Customer> list = createCriteria.list();
System.out.println(list);
tx.commit();
session.close();
}
//条件查询
/*
* > gt
* >= ge
* < lt
* <= le
* == eq
* != ne
* in in
* between and between
* like like
* is not null isnotnull
* is null isnull
* or or
* and and
*
* */
@Test
public void func10(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria createCriteria = session.createCriteria(Customer.class);
createCriteria.add(Restrictions.eq("cust_id", 2l));
Customer c = (Customer) createCriteria.uniqueResult();
System.out.println(c);
tx.commit();
session.close();
}
//分页查询
@Test
public void func11(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria createCriteria = session.createCriteria(Customer.class);
createCriteria.setFirstResult(0);
createCriteria.setMaxResults(5);
List<Customer> list = createCriteria.list();
System.out.println(list);
tx.commit();
session.close();
}
//查总记录数
@Test
public void func12(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
//设置查询的聚合函数
criteria.setProjection(Projections.rowCount());
//执行查询
Long count = (Long) criteria.uniqueResult();
System.out.println(count);
tx.commit();
session.close();
}
//原生sql查询
@Test
public void func13(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
String sql = "select * from cst_customer";
SQLQuery query = session.createSQLQuery(sql);
//指定将结果分装到的对象
query.addEntity(Customer.class);
List<Customer> list = query.list();
/*for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}*/
System.out.println(list);
tx.commit();
session.close();
}
//条件查询
@Test
public void func14(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
String sql = "select * from cst_customer where cust_id=?";
SQLQuery query = session.createSQLQuery(sql);
query.setParameter(0, 2l);
//指定将结果分装到的对象
query.addEntity(Customer.class);
Customer list = (Customer) query.uniqueResult();
/*for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}*/
System.out.println(list);
tx.commit();
session.close();
}
//分页查询
@Test
public void func15(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
String sql = "select * from cst_customer limit ?,?";
SQLQuery query = session.createSQLQuery(sql);
query.setParameter(0, 0);
query.setParameter(1, 6);
//指定将结果分装到的对象
query.addEntity(Customer.class);
// Customer list = (Customer) query.uniqueResult();
List<Customer> list = query.list();
/*for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}*/
System.out.println(list);
tx.commit();
session.close();
}
}
hibernate三种查询实例
最新推荐文章于 2024-08-05 14:55:59 发布