hibernate增、删、改、查(CRUD)
来源:互联网 发布:vue.js 教程是mvvm? 编辑:程序博客网 时间:2024/05/29 05:13
需要注意的地方:
删除和修改操作都要指定对象的id,即主键,经过我的测试,如果不指定对象的主键,
删除和修改操作都是不成功的。
-------------------------------------------------------------------------------------------------------------------------------
注:我测试的环境为MyEclipse10+hibernate 3.6.4+mysql5.6
-------------------------------------------------------------------------------------------------------------------------------
先看下我测试时用的表tbAdmin结构和数据截图:
表tbAdmin数据如下:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我工程的结构截图如下(注意映射文件Admin.cfg.xml的位置为bean\Admin.cfg.xml):
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
持久化类Admin的代码如下:
package bean; //bean包存放的就是VO类了。import java.io.Serializable;public class Admin implements Serializable{ //对应管理员表tbAdminprivate static final long serialVersionUID = 1L;intid;//对应表中的主键String name;String pass;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
映射文件Admin.cfg.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="bean.Admin" table="tbAdmin" catalog="dbAddressBook">
<id name="id" type="java.lang.Integer">
<column name="id" /><!--表tbAdmin的主键-->
<generator class="native"></generator><!--主键生成方式-->
</id>
<property name="name" type="java.lang.String" >
<column name="name" />
</property>
<property name="pass" type="java.lang.String" >
<column name="pass" />
</property>
</class>
</hibernate-mapping>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
hibernate.cfg.xml的配置内容如下:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools.-->
<hibernate-configuration>
<session-factory>
<property name="javax.persistence.validation.mode">none</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/dbAddressBook
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="bean/Admin.cfg.xml" /><!-- 文件映射 -->
</session-factory>
</hibernate-configuration>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上都是准备工作,现在可以进行CRUD操作了。为了方便说明,我写了个操作模板,文章后面
都是在这个模板下面进行的,该操作模板如下:
package test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;import bean.Admin;public class MyTest {@Testpublic void test() {Configuration cfg=new Configuration();//创建配置对象cfg//cfg.configure()会读取hibernate的配置文件hibernate.cfg.xmlSessionFactory sf=cfg.configure().buildSessionFactory();//创建会话工厂Session session=sf.openSession();//打开会话org.hibernate.Transaction tx=session.beginTransaction();//开启事务//在这里进行增、删、改、查...tx.commit();//提交事务session.close();//关闭事务}}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
增操作代码如下:
//在这里进行增、删、改、查...Admin admin=new Admin();admin.setName("test2013");admin.setPass("123456");session.save(admin); //增操作,即往表中增加数据
效果截图:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
删操作代码如下:
//在这里进行增、删、改、查...Admin admin=new Admin();admin.setId(4);//设置对象的主键,即在表中的主键session.delete(admin); //删操作,即从表中删除数据
效果截图如下(刚才添加的数据不见了哈):
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
改操作如下:
//在这里进行增、删、改、查...Admin admin=new Admin();admin.setId(2);//设置对象的主键,即在表中的主键admin.setName("qq");admin.setPass("123456");session.update(admin); //更新操作,即更改表中的数据
效果截图如下(qq密码变了哈):
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最后说下查询操作,这个比较麻烦,因为hibernate支持的查询方式有几种,如HQL查询,QBC查询,原生态SQL查询,
这里我使用的是HQL查询。
使用HQL查询,有一个地方需要注意,那就是from后面跟的不是表名,二是持久化类的完整类名。
什么是持久化类?就是我们上面在映射文件Admin.cfg.xml中配置的类了。
什么是完整类名?就是带包的类了,如java.lang.String
关于持久化类,截图如下(下图中的bean.Admin就是持久化类了。):
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
就废话这么多了,查询代码如下:
//在这里进行增、删、改、查...Admin admin=new Admin();java.util.List<Admin> list=session.createQuery("from bean.Admin").list();for(int i=0;i<list.size();i++){admin=list.get(i);System.out.println(admin.getId()+" "+admin.getName()+" "+admin.getPass());}
效果截图如下:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。
- hibernate增、删、改、查(CRUD)
- hibernate之注解版CRUD(增、删、改、查)实现
- MySql的CRUD(增、删、改、查)操作
- sqlitedabase提供的CRUD(增、删、改、查)方法
- struts2实现CRUD(增 删 改 查)
- struts2实现CRUD(增 删 改 查)
- 实现hibernate的crud(增删查改)
- Hibernate中关联关系的CRUD(增删改查)
- Hibernate实现数据的增删改查(CRUD)操作
- hibernate对单表增删改查(CRUD)
- Hibernate入门(6):CRUD 增删改查
- Hibernate基本概念与CRUD(增删改查)
- Hibernate的增删改查CRUD
- Hibernate增、删、改、查
- Hibernate学习笔记(2)----Hibernate中的增删改查(CRUD)
- hibernate笔记05 Hibernate实现类的crud(增删改查)操作
- 13hibernate hibernate关联关系的CRUD(增删改查)
- MySQL数据表的CRUD(増、删、改、查)操作
- xCode工程的文件夹类型 folder References group
- win 7 + VC++ 2008 express + OpenCv 2.1.0安装
- 缺陷管理--软件缺陷的优先级
- ArcGIS Server10.1资料集锦
- Ubuntu 12.04 + opencv 2.4.1 + Qt 4.8.3 + Qt creater 2.5.2 安装配置
- hibernate增、删、改、查(CRUD)
- CSS和javascript+jQuery技巧小结
- ubuntu下安装qt的mysql驱动遇到的问题
- 几种截屏方法
- Oracle Stream配置详细步骤
- win 7下 jdk 安装环境变量设置
- HTTP协议详解(一)
- Android自动化测试之Monkeyrunner从零开始
- 国内的免费的jsp建站网站jhost邀请码2013.6.14-2013.7.14