hibernate增、删、改、查案例
来源:互联网 发布:淘宝网支付限额 编辑:程序博客网 时间:2024/06/08 15:18
搭建好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; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
当执行后,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=?
- 1
- 2
从上我们可以看出,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; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
hibernate日志打印如下:
Hibernate: insert into xx_plat_admin (admin_usename, admin_pwd) values (?, ?)
- 1
从上面我们可以看出,由于我们配置了主键自增, 所以主键是不在插入的字段之内,我们实体对象的属性,都会默认插入到数据库,不存在的补空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; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
hibernate日志如下:
Hibernate: delete from xx_plat_admin where admin_id=?
- 1
从日志我们可以看出,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; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
日志打印如下:
Hibernate: update xx_plat_admin set admin_usename=?, admin_pwd=? where admin_id=?
- 1
从日志我们可以看出,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 实现增、删、改、查 方法
- SSL_2292竞赛得分C++(动规练习题)
- BZOJ1143(CTSC2008)[祭祀river]--传递闭包+二分图最大匹配(求最长反链)
- 第三方友盟推送消息
- TX1刷机教程(安装caffe、cuda/cudnn)
- JAVA————一门强大的面向对象编程语言
- hibernate增、删、改、查案例
- 捉虫与寻龙:从0打造wordpress插件wp2oc fileshare (1) – 将wp存储后端做进owncloud
- 本地环境:mycat+mybatis+springboot实现demo
- 你可能不知道的提高react编写效率5倍的vscode插件- React/Redux/react-router Snippets
- hdu 1559
- 15 个最好的 Bootstrap 设计工具推荐
- 按照密码加密文件
- python爬虫
- Hibernate注解使用入门