hibernate增、删、改、查案例
来源:互联网 发布:windows系统是多用户 编辑:程序博客网 时间:2024/05/29 03:02
1、hibernate根据主键查询数据 get和load方法
搭建好hibernate环境,测试通过后,直接编写dao、此处省略了service和controller,需要大家自己编写代码补上spring+springmvc+hibernate环境搭建
@Override public Admin selectById(Admin param) { Session session = this.sessionFactory.openSession(); //get方法模式使用主键查询 Admin admin = (Admin) session.get(Admin.class, param.getId()); session.close(); return admin; }
当执行后,hibernate打印sql如下:
Hibernate: select admin0_.admin_id as admin_id1_0_0_, admin0_.admin_usename as admin_us2_0_0_, admin0_.admin_pwd as admin_pw3_0_0_ from xx_plat_admin admin0_ where admin0_.admin_id=?
从上我们可以看出,hibernate是get方法通过主键为条件去查询数据的,
同理load方法也是默认使用主键查询,但是区别在于load支持懒加载,而get不支持,在后面的get和load方法区别的时候详细讲解,也可自行查阅资料进行分析。
2、利用hibernate的save方式进行插入数据,代码如下:
@Override public boolean add(Admin param) { Session session = this.sessionFactory.openSession(); //开启事务 Transaction t = session.beginTransaction(); //完成增加操作 int result = (Integer) session.save(param); //提交事务 t.commit(); //关闭回话 session.close(); return result > 0; }
hibernate日志打印如下:
Hibernate: insert into xx_plat_admin (admin_usename, admin_pwd) values (?, ?)
从上面我们可以看出,由于我们配置了主键自增, 所以主键是不在插入的字段之内,我们实体对象的属性,都会默认插入到数据库,不存在的补空null,
在hibernate增、删、改的时候,如果没有把事务交给spring来管理,我们需要手动的获取事务,提交事务
3、hiberante利用delete方法进行删除数据,代码如下:
@Override public boolean delete(Admin param) { Session session = this.sessionFactory.openSession(); Transaction t = session.beginTransaction(); //先查询出该数据,如果存在,就删除,如果不存在就返回 Admin admin = (Admin) session.get(Admin.class, param.getId()); int result = 0; if(admin == null) { return false; }else { session.delete(admin); } t.commit(); session.close(); return result > 0; }
hibernate日志如下:
Hibernate: delete from xx_plat_admin where admin_id=?
从日志我们可以看出,hibernate的delete方法删除数据也是以主键为基础完成的
4、利用update方法修改数据,代码如下:
@Override public Admin update(Admin param) { Session session = this.sessionFactory.openSession(); Transaction t = session.beginTransaction(); Admin admin = (Admin) session.get(Admin.class, param.getId()); if(admin != null) { admin.setPwd(param.getPwd()); admin.setUserName(param.getUserName()); session.update(admin); } t.commit(); session.close(); return null; }
日志打印如下:
Hibernate: update xx_plat_admin set admin_usename=?, admin_pwd=? where admin_id=?
从日志我们可以看出,hibernate的update发送的sql中对所有数据进行了从新修改,所以此处注意,我们尽量下查询数据,然后在修改查询对象的值,在调用update方法,不然很可能会导致数据库数据被脏改,
我们可以主要掉update方法,然后在测试,结果发现数据一样被修改,这里涉及到hibernate对数据的三种状态的管理和维护,因为hibernate在提交事务的时候会去对自己session管理的对象进行检查,如果发现缓存数据和数据库数据不一致,会发送SQL对数据库进行修改,
以上只是get、load、update、delete、save方法的使用,当然hibernate本身是支持SQL操作的,我们也可以通过其他方式达到目的,
- hibernate增、删、改、查案例
- hibernate增、删、改、查案例
- Hibernate增、删、改、查
- Hibernate 实现增删改查案例
- Hibernate 之增、删、改、查
- hibernate增、删、改、查(CRUD)
- Hibernate实现数据库增、删、改、查
- 使用Hibernate实现增、删、改、查
- hibernate简单的增、删、查、改
- Hibernate学习---第二节:hibernate 增、删、改、查
- Struts2+hibernate实现用户登录和增删改查案例
- Struts2+hibernate实现用户登录和增删改查案例
- Struts2+hibernate实现用户登录和增删改查案例
- hibernate一对多 操作(增,删,改,查)
- Hibernate实现记录的增、删、改和查功能
- 使用Hibernate实现简单的增、改、删、查操作
- hibernate之基本操作(增,删,改,查)
- Hibernate.gethibernatetemplate 实现增、删、改、查 方法
- Python机器学习初识
- xcode使用dlib库
- android二维码扫描
- 欢迎使用CSDN-markdown编辑器
- 项目质量管理之持续改进
- hibernate增、删、改、查案例
- 如何做电视直播
- 工作总结第六天
- 借助plupload插件实现前端JS分片上传并显示进度
- rest风格、rest框架、restful,什么意思?这不是一种技术,而是一种概念。rest其实就是动静分离即前后端分离
- 线上机器JVM参数配置
- SmartTabLayout 参数详解
- HttpWebRequest类详解
- ELK日志分析系统初体验