力所能及之hibernate简单的增删查改

小狼今天在Hibernate相关的东西,就来说说hibernate最简单的增删查改吧

同样,写一个hibernate.cfg.xml   小狼在这里用mysql,oracle实在太慢,大家见谅

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE  hibernate-configuration     
       PUBLIC  "-//Hibernate/Hibernate  Configuration  DTD//EN"     
       "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
<hibernate-configuration>
<session-factory>
	<!-- Database connection settings -->
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<property name="connection.url">
		jdbc:mysql://localhost:3306/zhang
	</property>
	<property name="connection.username">root</property>
	<property name="connection.password">root</property>

	<!-- JDBC connection pool (use the built-in) -->
	<property name="connection.pool_size">2</property>

	<!-- SQL dialect -->
	<property name="dialect">
		org.hibernate.dialect.MySQLInnoDBDialect
	</property>

	<!-- Enable Hibernate's current session context -->
	<property name="current_session_context_class">
		org.hibernate.context.ManagedSessionContext
	</property>

	<!-- Disable the second-level cache  -->
	<property name="cache.provider_class">
		org.hibernate.cache.NoCacheProvider
	</property>

	<!-- Echo all executed SQL to stdout -->
	<property name="show_sql">true</property>

	<!-- Drop and re-create the database schema on startup -->
	<property name="hbm2ddl.auto">update</property>
	<mapping resource="qh/zcy/entity/User.hbm.xml"></mapping>


</session-factory>
</hibernate-configuration>
大家看这里

<property name="hbm2ddl.auto">update</property>
这个地方的值是有说法的,大家注意了

大家看这行

<mapping resource="qh/zcy/entity/User.hbm.xml"></mapping>

毋庸置疑,下面我们来创建User.hbm.xml

<hibernate-mapping package="org.hibernate.test.hql">
package表明映射文件对应的实体类所在的包路径,加了它
可以省去每个class都要写全name,如果不写这一项则
<class …>中的name=”User” 则要在User之前加上具体的包路径:

<?xml version="1.0"?>
<!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="qh.zcy.entity.User" table="t_user">
        <id name="id" column="ID" type="int">
            <generator class="increment"/>
        </id>
        <property name="name" type="string"/>
       
    </class>
</hibernate-mapping>

很简单的一个表,Javabean小狼在这里就不说了

看看DaoTest,这里使用junit4测试

 package qh.zcy.dao;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.junit.Test;

import qh.ConstantUtil;
import qh.HibernateSessionFactory;
import qh.Log;
import qh.zcy.entity.User;

public class UserDao {
    //save方法
	@Test
	public void TestUserAdd() {
		ConstantUtil.session = null;
		ConstantUtil.transaction = null;
		try {
			ConstantUtil.session = HibernateSessionFactory.getSessionFactory()
					.openSession();
			ConstantUtil.transaction = ConstantUtil.session.beginTransaction();

			User user = new User();

			user.setName("zhang");

			ConstantUtil.session.save(user);

			ConstantUtil.transaction.commit();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			ConstantUtil.transaction.rollback();
		}finally{
			ConstantUtil.session.close();
			
		}

	}
    //修改方法
	//运行这个方法的时候hibernate.cfg.xml中<property name="hbm2ddl.auto">update</property>选项一定要是update
	//否则报org.hibernate.StaleStateException错误,这个小狼在前面主要讲过
	@Test
	public void TestUserUpdate() {
		ConstantUtil.session = null;
		ConstantUtil.transaction = null;
		try {
			ConstantUtil.session = HibernateSessionFactory.getSessionFactory()
					.openSession();
			ConstantUtil.transaction = ConstantUtil.session.beginTransaction();

			User user = new User();
			user.setId(1);
			user.setName("chouchou");

			ConstantUtil.session.update(user);
			ConstantUtil.transaction.commit();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			ConstantUtil.transaction.rollback();
		}finally{
		
			ConstantUtil.session.close();
		}
	}
	//删除方法
	@Test
	public void TestUserDelete() {
		ConstantUtil.session=HibernateSessionFactory.getSessionFactory().openSession();
		
		ConstantUtil.transaction=ConstantUtil.session.beginTransaction();
		
		User user=new User();
		
		user.setId(1);
		
		ConstantUtil.session.delete(user);
		
		ConstantUtil.transaction.commit();
		
		ConstantUtil.session.close();
	}
	//查询方法  查询t_user表中的所有数据
	//这里的(from User)是hibernate的hql语句,具体的大家可以查阅资料
	@SuppressWarnings("unchecked")
	@Test
	public void TestUserFindAll() {
		ConstantUtil.session=HibernateSessionFactory.getSessionFactory().openSession();
		
		//ConstantUtil.transaction=ConstantUtil.session.beginTransaction();
		
		Query query=ConstantUtil.session.createQuery("from User");
		
		List<User> lists=query.list();
		
		for(User user:lists){
			Log.getLog().info("id="+user.getId()+"   name="+user.getName());
		}
		
		ConstantUtil.session.close();
	}
    //通过id查询该行数据方法一:通过数值查询
	@Test
	public void TestUserFindById_1() {
		ConstantUtil.session=HibernateSessionFactory.getSessionFactory().openSession();
		
		//ConstantUtil.transaction=ConstantUtil.session.beginTransaction();
		
		User user=(User)ConstantUtil.session.get(User.class, 1);
		
		Log.getLog().info("id="+user.getId()+"    name="+user.getName());
		
		ConstantUtil.session.close();
		
		
	}
    //通过id查询该行数据方法一:通过字符串查询
	@Test
	public void TestUserFindById_2() {
		ConstantUtil.session=HibernateSessionFactory.getSessionFactory().openSession();
		
		//ConstantUtil.transaction=ConstantUtil.session.beginTransaction();
		
		Query query=ConstantUtil.session.createQuery("from User u where name=?");
		
		User user=(User)query.setString(0, "zhang").uniqueResult();
		
		Log.getLog().info("id="+user.getId()+"    name="+user.getName());
		
		ConstantUtil.session.close();
		
		
	}
}


 

大家测试一下,这些小狼都测试过,完全没有问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值