Hibernate增删查改语句

旧时模样 提交于 2020-03-21 01:13:12

我用的数据库是MySQL,实体类叫Product

create table Product (
  proId integer not null auto_increment,
  proName varchar(50) not null,
  proPrice float not null,
  proCount integer not null,
  proDesc varchar(250) not null,
  primary key (proId)
)

1.Hibernate添加数据操作

Product product=new Product();

product.setProName("空调");
product.setProPrice("1888");
product.setProCount("50");
product.setProDesc("变频空调");
Transaction trans = session.beginTransaction();
session.save(product);trans.commit();     //任何有关数据库更新的操作都是commit后进数据库的

 

2.Hibernate删除数据操作

对象删除

Transaction trans = session.beginTransaction();
Product pro=new Product();
pro.setProId(8);  //用下面那句注释的语句效果也是一样的
//     Product pro = (Product)session.get(Product.class, 8);
session.delete(pro);
trans.commit();

注意,只能通过id来删除数据,不能通过title或content来删除,会报缺少标示符错误。

 

hql语句删除

String hql="from Product where ProId=:id";
Query<Product> query=session.createQuery(hql,Product.class);
query.setParameter("id", 8);    //赋值给id主键
List<Product> list=query.getResultList();     //先把数据查出来
pro=list.get(0);
Transaction trans = session.beginTransaction();
session.delete(pro); //执行删除语句
trans.commit();
 

 

3.Hibernate查询数据操作

hql查询

String hql="from Product";
        
Query<Product> query=session.createQuery(hql,Product.class);
        
List<Product> list=query.getResultList();

HQL是Hibernate主推的查询方式,和普通SQL语句也比较接近,但很重要一点不同就是HQL中from后面的是JAVA类名,不是库表名,切忌!!!如果查询全字段 "select *" 可以省略不写。

 

4.Hibernate修改数据操作

//第二个参数是要修改的主键
Product product=session.get(Product.class,8);

product.setProName("空调");
product.setProPrice("1888");
product.setProCount("100");
product.setProDesc("变频空调");
Transaction trans = session.beginTransaction();
session.update(product);
trans.commit();
 

其实这些事务的开启关闭以及session的关闭都可以交给Spring的声明式事务管理来处理

我就不写的那么详细了

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!