hibernate中的API{CRUD(Save update get delete)操作}(二)

hibernate环境搭建请看(点击打开链接)hibernate(一)

上篇文章已把hibernate环境搭建好了,下面就看代码演示

在写代码之前,先和大家说下上篇bean类中还必须实现toString方法,不然下面演示就是一串地址。

好了不多说了直接上代码

先看dao类

public class User {
    private Integer sno;
    private String name;
    private Integer age;

    public Integer getSno() {
        return sno;
    }
    @Override
    public String toString() {
        return "User{" +
                "sno=" + sno +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    public void setSno(Integer sno) {
        this.sno = sno;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
首先请大家先看下我的数据库,不然你们该以为我骗你们了

下面写个测试类

public class demo {
    public static void main(String[] args) {
        //读取文件配置信息
        Configuration configuration = new Configuration().configure();
        //获得sessionFactory对象
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获得session对象
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction transaction = session.beginTransaction();
        User user = new User();
        user.setName("孙悟空");
        user.setAge(500);
        //保存方法
        session.save(user);
        //提交事务
        transaction.commit();
        //关闭资源
        session.close();
        sessionFactory.close();
    }
上面的方法就是在hibernate中添加数据,运行成功后控制台会出现下面图片上的,
如果你们与我的不一样,或许你们就错了。


然后我们来看下数据库吧


看我的数据库多了一条数据,说明我的添加还是成功的

/**
 * 删除,根据sno删除
 */
@Test
public void fun(){
    Configuration configuration = new Configuration().configure();
    SessionFactory sessionFactory = configuration.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();
    User user = new User();
    user.setSno(7);
    session.delete(user);
    transaction.commit();
    session.close();
    sessionFactory.close();
}
上面的代码是删除,删除吗就是根据数据库中间来删除的,我的数据库主键就是sno

现在来看下数据库


控制台显示的sql语句


嘿嘿我把孙猴子弄死了,消失了吧

/**
 * 修改 update
 */
@Test
public void fun1(){
    Configuration configuration = new Configuration().configure();
    SessionFactory sessionFactory = configuration.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();
    User user = session.load(User.class,3);
    user.setName("君莫邪");
    user.setAge(20);
    session.update(user);
    transaction.commit();
    session.close();
    sessionFactory.close();
}

上面的代码是修改,就是把小枫改成了君莫邪,废话不多说,直接看结果


看下数据库的结果


出现了吧,又对了,不知道你们的运行结果怎么样啊

/**
 * 查询 根据主键查询
 */
@Test
public void fun2(){
    Configuration configuration = new Configuration().configure();
    SessionFactory sessionFactory = configuration.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();

    User user = session.get(User.class, 1);
    System.out.println(user);

    transaction.commit();
    session.close();
    sessionFactory.close();
}

这个是查询,直接在控制台打印输出的


哇,给我返回的是null啊,控制啊啊,后来想了想,还是没错的,因为我的数据库么有啊,所以给我返回的是空值,如果你们想要返回的不是控制的话,就把


那个框框的改成你们数据库中的有的数字,然后运行就有了

/**
 *
 */
@Test
public void fun3(){
    Configuration configuration = new Configuration().configure();
    SessionFactory sessionFactory = configuration.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();
    User user = new User();
    user.setName("莫邪");
    user.setAge(23);
    session.saveOrUpdate(user);
    transaction.commit();
    session.close();
    sessionFactory.close();
}

这个saveOrUpdate特别牛逼,不仅可以添加又可以修改,以后添加和修改都可以不用了,直接用它,那他是什么意思呢

大致的意思就是先添加,这里的添加时没有数据的的情况下的话添加,如果有的话就修改了


我没说错吧,跟我的意思很相同吧,来看下数据库的结果了


好了,基本上的增删改查都完了,在这我想问大家一个问题,就是上面的代码好多都是相同的,不知道你们是不是也有这样的感觉。好了,接下来就告诉大家一个简便的方法,那就是写一个工具类,把一些相同的代码都放进去

大家都可以用我的这个工具类哦

public class HibernateUtil {
    private static Configuration configuration=null;
    private static SessionFactory sessionFactory=null;
    static {
        //读取hibernate.cfg.xml文件
        configuration=new Configuration().configure();
        sessionFactory=configuration.buildSessionFactory();
    }
    public HibernateUtil(){}

    /**
     *打开session
     * @return
     */
    public static Session getSession(){
        return sessionFactory.openSession();
    }
    public static void close(Session session){
        session.close();
    }
}上面的就是我的工具类了
下面就是我用工具类写的增删改查了,运行结果和数据库就不给大家一一演示了,如果你们有兴趣的话可以把
我的代码复制一下在你们自己的电脑上运行一下,如有问题都可以在下方留言哦

public class demo1 {
    public static void main(String[] args) {

    }

    /**
     * 查询
     */
    @Test
    public void fun(){
        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        User user = session.get(User.class, 5);
        System.out.println(user);
        transaction.commit();
        HibernateUtil.close(session);
    }

    /**
     * 添加
     */
    @Test
    public void fun1(){
        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        User user = new User();
        user.setName("风铃");
        user.setAge(20);
        session.save(user);
        transaction.commit();
        HibernateUtil.close(session);
    }

    /**
     * update
     */
    @Test
    public void fun2(){
        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        User user = session.load(User.class,8);
        user.setName("夜梦");
        user.setAge(18);
        session.update(user);
        transaction.commit();
        HibernateUtil.close(session);
    }

    /**
     * delete
     */
    @Test
    public void fun3(){
        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        User user = session.load(User.class, 2);
        session.delete(user);
        transaction.commit();
        HibernateUtil.close(session);
    }

    /**
     * saveOrUpdate
     */
    @Test
    public void fun4(){
        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        User user = session.load(User.class,10);
        user.setName("大家好");
        user.setAge(30);
        session.saveOrUpdate(user);
        transaction.commit();
        HibernateUtil.close(session);
    }
}
到这里大家是不是感觉代码量是不是比上面的少多了,这就是工具类的好处哦,hibernate的基础的增删改查到这里

就要给大家说再见了,希望看到这边文章的大哥大姐们给小弟点个赞,你们的轻轻一点就是给我最大的动力,好了不多说了


  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

double_lifly

点喜欢就是最好的打赏!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值