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的基础的增删改查到这里
就要给大家说再见了,希望看到这边文章的大哥大姐们给小弟点个赞,你们的轻轻一点就是给我最大的动力,好了不多说了