hibernate对单表的增删改查
ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
实现对单表的增删改查
向区域表中增加数据:
第一步:
新建一个Dao(实现add方法):
public void add(Emp emp){
Session session=HibernateSessionFactory.getSession();
Transaction t=session.beginTransaction();
try{
session.save(emp);
t.commit();
}catch (Exception e) {
t.rollback();
}finally {
HibernateSessionFactory.closeSession();
}
}
第二步
新建一个类TestUi:
public static void main(String[] args) {
{
EmployeeDao dao=new EmployeeDao();
Emp emp=new Emp();
emp.setId(4);
emp.setUsername("留言");
emp.setPassword("78fd55");
dao.add(emp);
}
}
设置了事务的自动提交功能

Hibernate.cfg.xml文件,会自动增加一条自动提交的代码
<property name="connection.autocommit">true</property>
当设置了事务的自动提交功能后,上面的dao层的代码就得修改:
public void add(Emp emp) throws Exception{
Session session=HibernateSessionFactory.getSession();
try{
session.save(emp);
session.flush();
}catch (Exception e) {
// TODO: handle exception
throw Exception;
}finally {
HibernateSessionFactory.closeSession();
}
}
把区域表中删除数据:
第一步:
新建一个Dao:
session.save(emp);改成 session.delete(emp);
删除还有第二种方式:此种方式虽然官方不推荐,但此种方式更灵活一些。
public void delete(Emp emp){
String sql="delete from emp where username=?";
Session session=HibernateSessionFactory.getSession();
try{
SQLQuery S=session.createSQLQuery(sql);
S.setString(0, emp.getUsername());
S.executeUpdate();
}catch (Exception e) {
// TODO: handle exception
}finally {
HibernateSessionFactory.closeSession();
}
}
第二步:新建一个TestUi:
public static void main(String[] args) {
{
EmployeeDao dao=new EmployeeDao();
Emp emp=new Emp();
emp.setUsername("留言");
dao.delete(emp);
}
}
在区域表中更新数据:
第一步:
新建一个Dao:
把session.save(emp);改成 session.update(emp);
还有第二种方式:
更改sql语句即可。
第二步:
新建一个类TestUi:
在区域表中查询数据:
第一步:
新建一个Dao:
public List<Emp> select(){
String sql="from Emp where username=?"; //此处为hql语句,Emp为对象名,区分大小写
Session session=HibernateSessionFactory.getSession();
List<Emp> list=null;
try{
Query q=session.createQuery(sql);
q.setString(0, "大概");
list=q.list();
}catch (Exception e) {
// TODO: handle exception
}finally {
HibernateSessionFactory.closeSession();
}
}
查询是不需要flush()的。
sql方式查询:
public List<Emp> sel(){
Session session=HibernateSessionFactory.getSession();
List<Emp> list=new ArrayList();
try {
String sql="select * from emp";
SQLQuery q=session.createSQLQuery(sql);
Iterator its=q.list().iterator();
while(its.hasNext()){
Emp emp=new Emp();
Object[] obj=(Object[])its.next();
emp.setUsername(obj[0].toString());
emp.setPassword(obj[1].toString());
list.add(emp);
}
} catch (Exception e) {
// TODO: handle exception
}finally {
HibernateSessionFactory.closeSession();
}
return list;
}
第二步:
新建一个类TestUi:
for循环取值即可,不做演示。
get方法查询:
Dao中查询方法中使用:
Emp emp=(Emp)session.get(Emp.class,"按主键查询,这里写要查询的数据主键的值")
查找的另一个方法load方法
把get改成load,其余部分语法相同。
总结:
get和load的区别:
1)load先去找缓存, 如果缓存中没有数据,那就去数据库中查。
2)get是先去找数据库,不过load不可控,最好用get
hibernate对单表的增删改查的更多相关文章
- python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)
day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...
- Django学习笔记(10)——Book单表的增删改查页面
一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...
- django模型层 关于单表的增删改查
关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- Mybatis(一)实现单表的增删改查
1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...
- Django学习笔记--数据库中的单表操作----增删改查
1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...
- django 利用ORM对单表进行增删改查
牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...
- 1.SSM整合_单表的增删改查
目标:增删改查 环境:Maven+Eclipse+Tomcat7+JDK7 思维导图: 表结构 目录结构 依赖 <dependencies> <dependency> < ...
- Django中对单表的增删改查
之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象 book_obj=Book.objects.creat ...
- Hibernate和jsp做数据库单表的增删改查
虽然很基础,但是我转牛角尖了~~~~这是几个文件 1.最重要的.Java文件 package com.chinasofti.hibb.struts; import org.hibernate.Sess ...
随机推荐
- Linux性能监控工具 gtop
给大家介绍一款性能监控工具,个人对比界面比top美观,常用指标比较清晰毕竟top上的指标不是每个人都能熟悉,也不是所有指标参数都需要看,对于新手也不便查找,好了说的再多先上图大家参观一下. 1.安装需 ...
- Linux密钥登录原理和ssh使用密钥实现免密码登陆
目录 1. 公钥私钥简介 2. 使用密钥进行ssh免密登录 2.1. 实验环境 2.2. 开始实验 3. ssh的两种登陆方式介绍 3.1. 口令验证登录 3.2. 密钥验证登录 4. 总结 1.公私 ...
- 使用公共的存储过程实现repeater的分页
当一个项目repeater分页多的时候使用公共的存储过程实现分页,是不错的选择 ALTER PROC [dbo].[P_Common_proc] -- 通用分页存储过程 @TableName varc ...
- Thinkphp5所有页面验证用户是否登陆
新建Base.php控制器,所有的页面继承自它 <?php namespace app\index\controller; use think\Controller; class Base ex ...
- 如何用Python做自动化特征工程
机器学习的模型训练越来越自动化,但特征工程还是一个漫长的手动过程,依赖于专业的领域知识,直觉和数据处理.而特征选取恰恰是机器学习重要的先期步骤,虽然不如模型训练那样能产生直接可用的结果.本文作者将使用 ...
- python——元组(tuple)基本操作
元组被称为只读列表,数据可被查询,但不能被修改,类似于列表的切片操作,元组写在小括号里面()元素之前用逗号隔开 对于一些不想被修改的数据,可以用元组来保存 # 创建元组 1)创建空元组 # 创建空元 ...
- SVM中的间隔最大化
参考链接: 1.https://blog.csdn.net/TaiJi1985/article/details/75087742 2.李航<统计学习方法>7.1节 线性可分支持向量机与硬间 ...
- springMVC3
复习: springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以 ...
- 笔记-twisted-adbapi-scrapy
笔记-twisted-adbapi-scrapy-mysql 1. 异步插入mysql 在爬虫中需要insert到mysql,但有一个问题是在爬虫环境中commit的及时性与性能冲突. 一般 ...
- PostgreSQL字段名和表名大小写的问题
创建表的时候,表名和字段名必须全小写,然后查询的时候不管全大写或全小写,或是Camel模式都不会报错.只要名称中有大写字母,或者全大写,查询时就必须保证大小写正确并用双引号包起来,否则就会报“XXX不 ...