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());}

效果截图如下:


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


您的十分满意是我追求的宗旨。

您的一点建议是我后续的动力。






原创粉丝点击