hibernate操作数据库

在配置完hibernate环境之后使用起来就特别简单
代码为证
用hibernate操作数据库时要注意当影响数据库得数据本身时要通过事务来进行操作这样才能保证安全性。增删改操作都会影响数据库的数据。

一 、用Session来操作

    //  1.  创建Configuraction对象,注意configure()方法
        Configuration cfg = new Configuration().configure();

        //  2.  通过Configuration对象创建SessionFactory对象
        SessionFactory sf = cfg.buildSessionFactory();

        //  3.  使用SessionFactory对象创建一个Session对象
        Session s = sf.openSession();

        //  4.  使用Session对象开启一个事务
        Transaction tx = s.beginTransaction();

        try {
            //  5.  实现数据的crud操作
            //增加数据
            s.save(user);
            //实现数据更新
            s.update(user);
            //实现数据的删除 这里的对象所有属性必须都要有值,缺少会出错。删除时只关注id 别的属性值没有影响但是得有。
            s.delete(user);
            //  6.  commit或者rollback事务
            tx.commit();

            return true;
        } catch (Exception e) {
            //  6.  commit或者rollback事务
            tx.rollback();
            e.printStackTrace();
        } finally {

            //  7.  关闭session对象
            s.close();
        }

当进行查询数据时不需要进行事务操作
1.用ID来查询单个数据

       Configuration cfg = new Configuration().configure();

        SessionFactory sf = cfg.buildSessionFactory();

        Session s = sf.openSession();
        Cuser cuser=s.get(CUser.class, 2);
  1. 查询所有数据
Session s = sf.openSession();
List<Student> list=s.createQuery("from Student").getResultList();

二 用Criteria来查询

       //查询数据库所有数据
       Session s = sf.openSession();

        List<User> list = null;

        Criteria criteria = s.createCriteria(User.class);

        list = criteria.list();


       //查询username为name的所有数据

        Criteria criteria = s.createCriteria(User.class);
        //""中的为类中的属性名
        criteria.add(Restrictions.eq("username", name));

        list = criteria.list();



       //id查询
        Criteria c = s.createCriteria(User.class);
        c.add(Restrictions.idEq(new Integer(uid)));

        list = c.list();


       //多id查询
        Integer[] ids= new Integer[]{1, 2, 3, 55, 33};
        Criteria c = s.createCriteria(User.class);
        c.add(Restrictions.in("uid", ids));
        list = c.list();



      //模糊查询
      Criteria c = s.createCriteria(User.class);

        /// MatchMode.ANYWHERE 匹配%name%
        /// MatchMode.END 匹配%name
        /// MatchMode.EXACT 匹配字符串本身,等同于eq
        /// MatchMode.START 匹配name%
        c.add(Restrictions.like("username", name, MatchMode.START));

        list = c.list();



       //排序查询
       Criteria c = s.createCriteria(User.class);
        //升序
        c.addOrder(Order.asc("username"));
        //降序c.addOrder(Order.desc("password"));

        list = c.list();



     //多限制查询
     Criteria c = s.createCriteria(User.class);
        c.add(Restrictions.and(Restrictions.like("username", name, MatchMode.ANYWHERE),
                Restrictions.like("password", pass, MatchMode.ANYWHERE)));

        list = c.list();


      //非空和空查询
      Criteria c = s.createCriteria(User.class);
        c.add(Restrictions.isNull("username"));
        //c.add(Restrictions.isNotNull("username"));

        list = c.list();

三 用sql语句来操作

Session s = sf.openSession();
Transaction tx = s.beginTransaction();

        String sql = String.format("delete from user where uid = %d", 31);
        NativeQuery query = s.createNativeQuery(sql);

        int result = 0;
        try {

            result = query.executeUpdate();

            tx.commit();
        } catch (Exception e) {
            tx.rollback();
            e.printStackTrace();
        }finally{
            s.close();
        }

        if(result > 0){
            System.out.println("successfully");
        }else{
            System.out.println("error");
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值