hibernate的映射配置文件(hbm.xml) 主配置文件(cig.xml) com.mysql.jdbc.Driver jdbc:mysql:///worknotes dev dev org.hibernate.dialect.MySQLDialect true true update 4 thread hibernate自用工具类 import org.hibernate.Sessio
主配置文件(cig.xml)
hibernate自用工具类com.mysql.jdbc.Driver jdbc:mysql:///worknotes dev dev org.hibernate.dialect.MySQLDialect true true update 4 thread
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class hibernateUtils { public Session OpenSession(){ Configuration conf=new Configuration().configure(); SessionFactory sf = conf.buildSessionFactory(); Session session = sf.openSession(); return session; } }hibernate使用测试
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import com.learn.Dao.StudentDao; import com.learn.Utils.hibernateUtils; public class testHiber { public static void main(String [] agrs){ testHiber h=new testHiber(); h.test(); } public void test(){ //1.创建,调用空参构造 Configuration conf=new Configuration().configure(); //2.读取指定配置文件 空参加载默认src/hibernate.cfg.xml //conf.configure(); //3用于创建操作数据库核心对象session对象的工厂 //注意1.sessionFactory负责保存和使用配置信息。消耗内存资源非常大。 // 2.sessionFactory属于线程安全的对象设计 //结论:保证在web项目中,至创建一个sessionFactory。 SessionFactory sf = conf.buildSessionFactory(); //4.获得session Session session = sf.openSession();//打开一个新的session //session对象功能:表达hibernate框架与数据库之间的连接(回话)类似于jdbc的Connection //5.session获得操作十五的transaction对象 Transaction tx = session.beginTransaction(); StudentDao s=new StudentDao(); s.setSno("yihao"); s.setSname("hibernat"); s.setSex("nan"); session.save(s); tx.commit(); session.close(); sf.close(); } @Test public void testUtils(){ Session session=new hibernateUtils().OpenSession(); Transaction tx = session.beginTransaction(); StudentDao s=new StudentDao(); s.setSno("NUMber02"); s.setSname("hiber"); s.setSex("nv"); session.save(s); tx.commit(); session.close(); //sf.close(); } }hql查询
import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.itheima.domain.Customer; import cn.itheima.utils.HibernateUtils; //测试HQL语句 public class Demo { @Test //基本查询 public void fun1(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //1> 书写HQL语句 // String hql = " from cn.itheima.domain.Customer "; String hql = " from Customer "; // 查询所有Customer对象 //2> 根据HQL语句创建查询对象 Query query = session.createQuery(hql); //3> 根据查询对象获得查询结果 Listcriteria查询list = query.list(); // 返回list结果 //query.uniqueResult();//接收唯一的查询结果 System.out.println(list); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //条件查询 //HQL语句中,不可能出现任何数据库相关的信息的 public void fun2(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //1> 书写HQL语句 String hql = " from Customer where cust_id = 1 "; // 查询所有Customer对象 //2> 根据HQL语句创建查询对象 Query query = session.createQuery(hql); //3> 根据查询对象获得查询结果 Customer c = (Customer) query.uniqueResult(); System.out.println(c); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //条件查询 //问号占位符 public void fun3(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //1> 书写HQL语句 String hql = " from Customer where cust_id = ? "; // 查询所有Customer对象 //2> 根据HQL语句创建查询对象 Query query = session.createQuery(hql); //设置参数 //query.setLong(0, 1l); query.setParameter(0, 1l); //3> 根据查询对象获得查询结果 Customer c = (Customer) query.uniqueResult(); System.out.println(c); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //条件查询 //命名占位符 public void fun4(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //1> 书写HQL语句 String hql = " from Customer where cust_id = :cust_id "; // 查询所有Customer对象 //2> 根据HQL语句创建查询对象 Query query = session.createQuery(hql); //设置参数 query.setParameter("cust_id", 1l); //3> 根据查询对象获得查询结果 Customer c = (Customer) query.uniqueResult(); System.out.println(c); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //分页查询 public void fun5(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //1> 书写HQL语句 String hql = " from Customer "; // 查询所有Customer对象 //2> 根据HQL语句创建查询对象 Query query = session.createQuery(hql); //设置分页信息 limit ?,? query.setFirstResult(1); query.setMaxResults(1); //3> 根据查询对象获得查询结果 List list = query.list(); System.out.println(list); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } }
import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.junit.Test; import cn.itheima.domain.Customer; import cn.itheima.utils.HibernateUtils; //测试Criteria查询 public class Demo { @Test //基本查询 public void fun1(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //查询所有的Customer对象 Criteria criteria = session.createCriteria(Customer.class); Listlist = criteria.list(); System.out.println(list); // Customer c = (Customer) criteria.uniqueResult(); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //条件查询 //HQL语句中,不可能出现任何数据库相关的信息的 // > gt // >= ge // < lt // <= le // == eq // != ne // in in // between and between // like like // is not null isNotNull // is null isNull // or or // and and public void fun2(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //创建criteria查询对象 Criteria criteria = session.createCriteria(Customer.class); //添加查询参数 => 查询cust_id为1的Customer对象 criteria.add(Restrictions.eq("cust_id", 1l)); //执行查询获得结果 Customer c = (Customer) criteria.uniqueResult(); System.out.println(c); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //分页查询 public void fun3(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //创建criteria查询对象 Criteria criteria = session.createCriteria(Customer.class); //设置分页信息 limit ?,? criteria.setFirstResult(1); criteria.setMaxResults(2); //执行查询 List list = criteria.list(); System.out.println(list); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //查询总记录数 public void fun4(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //创建criteria查询对象 Criteria criteria = session.createCriteria(Customer.class); //设置查询的聚合函数 => 总行数 criteria.setProjection(Projections.rowCount()); //执行查询 Long count = (Long) criteria.uniqueResult(); System.out.println(count); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } }