Hibernate工具类使用学习

Session,Query,Criteria,SQLQuery四种工具类的使用,套路都类似,具体的使用方法的差别看代码。有注释:


    /**
     * 测试session会话的update,delete,insert方法
     */
    @Test
    public void testSession(){
        Configuration configuration = new Configuration();
        configuration.configure();
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获得全新的session会话
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction transaction = session.beginTransaction();
//        User user = (User)session.load(User.class,2);
        User user = new User(0,"leiheng","1234",Date.valueOf("1997-05-13"));
        session.save(user);
        System.out.println(user);
        //提交事务
        transaction.commit();
        //手动关闭session会话
        session.close();
        sessionFactory.close();
        return;
    }

    /**
     * 测试Query查询
     */
    @Test
    public void testQuery(){
        //获取用户核心配置对象
        Configuration configuration = new Configuration();
        //加载核心配置文件,默认加载hibernate.cfg.xml
        configuration.configure();
        //构建SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //生产Session会话对象
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        //获取Query查询对象,Hibernate通过类来映射表
        Query query = session.createQuery("from User where username = ?");
        query.setParameter(0,"liqiaoyu");
//        //分页查询limit ?,?
//        query.setFirstResult(0);
//        query.setMaxResults(3);//从0数据开始一次3个
        Object o = query.uniqueResult();
        System.out.println(o);
        //返回多行数据
        /**
         * list()多行
         * uniqueResult()单行
         */
//        List list = query.list();
//        for(Object o:list){
//            System.out.println(o);
//        }
        //手动关闭session会话
        session.close();
        sessionFactory.close();
        return;
    }

    /**
     * 测试Criteria
     * 已经废弃
     */
    @Test
    public void testCriteria(){
        //获取用户核心配置对象
        Configuration configuration = new Configuration();
        //加载核心配置文件,默认加载hibernate.cfg.xml
        configuration.configure();
        //构建SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //生产Session会话对象
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();

        //创建Criteria对象
        Criteria criteria = session.createCriteria(User.class);
        User user = new User(5,"leiheng","1234",Date.valueOf("1997-07-08"));
        //根据属性来取对象,在Restrictions静态方法中提供条件,查询由critearia对象处理
        //gt是大于,ge是大于等于
        criteria.add(Restrictions.gt("id",2));
        System.out.println(criteria.list());
        //模糊查询
        criteria.add(Restrictions.like("username","%li%"));
        //其余建议百度,套路类似,反正都是一个接口
        System.out.println(criteria.list());
        //手动关闭session会话
        transaction.commit();;
        session.close();
        sessionFactory.close();
        return;
    }

    /**
     * SQLQuery
     * 使用原生sql来进行查询,因为并不是所有sql都可以用hql表达
     */
    @Test
    public void testSQLQuery(){
        //获取用户核心配置对象
        Configuration configuration = new Configuration();
        //加载核心配置文件,默认加载hibernate.cfg.xml
        configuration.configure();
        //构建SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //生产Session会话对象
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();

        //创建SQLQuery,注意要封装实体类需要addEntity
        SQLQuery sqlQuery = session.createSQLQuery("select * from user").addEntity(User.class);
        List<Object> list = sqlQuery.list();
        for(Object o:list){
            System.out.println(o.toString());
        }

        //手动关闭session会话
        transaction.commit();;
        session.close();
        sessionFactory.close();
        return;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值