package smile.fu.hibernatetest; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import smile.fu.entity.User; public class HibernateDemo { @Test public void testAdd() { // 1. 加载hibernate核心配置文件 // 到src下面找到名称是hibernate.cfg.xml的文件 // 在hibernate里面封装对象 Configuration cfg = new Configuration(); cfg.configure(); // 2.创建sessionFactory对象 // 读取hibernate核心配置文件内容,创建sessionFactory // 读取过程中根据映射关系在配置数据库中把表创建 SessionFactory sessionFactory = cfg.buildSessionFactory(); // 3.使用sessionFactory创建session对象 // 类似于链接 Session session = sessionFactory.openSession(); // 4. 开启事务 Transaction tx = session.beginTransaction(); // 5.crud操作 // User user = new User(); // user.setUserName("王花花"); // user.setPassword("wanghuahua123"); // user.setAddress("王华爱护"); // session.save(user); // 批量添加,内存不爆炸 // User user=new User(); // for(int i=666;i<=777;i++) { // user.setUserName("Name"+i); // user.setPassword(""+i*i); // user.setAddress("江西省三生三世"+i); // session.save(user); // //将session的一级缓存的数据与数据库同步 //// session.flush(); // //清除session的一级缓存数据 // session.clear(); // } //hql查询操作 需要写hql语句 是对实体类进行操作 使用 Query对象来实现 // 查询list中的数据 // ArrayList<String> passwordList=new ArrayList<>(); // passwordList.add("1"); // passwordList.add("582169"); // passwordList.add("568516"); // passwordList.add("570025"); // // Query query = session.createQuery("from User it where it.password in // (:passwordList)"); // query.setParameterList("passwordList", passwordList); // List<User> aList= query.list(); // for (User user : aList) { // System.out.println(user.toString()); // } // 模糊查询 // Query query = session.createQuery("from User it where it.address like ?"); // % 与_ 的区别 %表示有n个 _表示有一个 // query.setParameter(0, "%江西%"); //setParameter 的时候可以用? 0 传递参数的值 // List<User> userList = query.list(); // for (User user : userList) { // System.out.println(user.toString()); // } // 排序查询 order by it.property 升序asc 降序desc // Query query=session.createQuery("from User it order by it.password desc"); // List<User> userList = query.list(); // for (User user : userList) { // System.out.println(user.toString()); // } // 分页查询 mysql select * from t_user limit 0,3 // hibernate中不能用limit,因为limit是mysql中独有的 // Query query=session.createQuery("from User it order by it.password desc"); // query.setFirstResult(0); // query.setMaxResults(10); // List<User> userList = query.list(); // for (User user : userList) { // System.out.println(user.toString()); // } // 投影查询 查询表中部分字段的值 select userName,password from t_user // select 实体类属性名称1,实体类属性名称2 from 实体类名称 // hibernate中select后面不能跟* 不支持select * // Query query=session.createQuery("select password from User it order by // it.password desc"); // List<Object> userList = query.list(); // for (Object user : userList) { // System.out.println(user); // } // 聚合函数 // Query query = session.createQuery("select count(*) from User"); // //使用的是uniqueResult方法,唯一值 // System.out.println(query.uniqueResult()); // avg min max count // Query query = session.createQuery("select avg(password) from User"); // System.out.println(query.uniqueResult()); // User user= session.get(User.class, 4); // user.setAddress("改了地址23112"); // session.update(user); // session.delete(session.get(User.class, 7)); // ArrayList<Integer> idList=new ArrayList<Integer>(); // idList.add(3); // idList.add(4); // idList.add(5); // idList.add(6); // Query query = session.createQuery("DELETE FROM User it where it.id in // (:idList)"); // query.setParameterList("idList",idList ); // query.executeUpdate(); // 6.提交事务 tx.commit(); // 事务回滚 // tx.rollback(); // 7.关闭连接释放资源 session.close(); sessionFactory.close(); } }