使用Hibernate操作修改mysql数据

本文由http://blog.csdn.net/jiuqiyuliang/article/details/39380465启发,可作为观后改,并修改原博主相关错误。


首先在数据库创建表:

DROP TABLE IF EXISTS USER  ;
CREATE TABLE USER (
id INT NOT NULL AUTO_INCREMENT, 
NAME VARCHAR(255), 
PASSWORD VARCHAR(255),
 createTime DATE, 
 expireTime DATE, 
 PRIMARY KEY (id)
 ) 

注意此处的id为自增id(本文用自增来作为主键唯一id的方式,如果此处不设置为AUTO_INCREMENT,hibernate中的@GeneratedValue(strategy = GenerationType.IDENTITY)标签将无法使用,具体往下看


项目所需jar包



实体类部分映射相应的表,

package hibernate;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
//不写Table默认为user,@Table(name="t_user")  
public class User {

	@Id
	//主键  
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	//采用数据库自增方式生成主键  
	//JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.   
	//TABLE:使用一个特定的数据库表格来保存主键。   
	//SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。   
	//IDENTITY:主键由数据库自动生成(主要是自动增长型)   
	//AUTO:主键由程序控制。  
	private Integer id;

	private String name;
	private String password;

	@Temporal(TemporalType.DATE)
	//生成yyyy-MM-dd类型的日期  
	private Date createTime;
	@Temporal(TemporalType.DATE)
	//生成yyyy-MM-dd类型的日期  
	private Date expireTime;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@Column(name = "name", unique = true, nullable = false)
	//字段为name,不允许为空,用户名唯一  
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Column(name = "password")
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Column(name = "createTime")
	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	@Column(name = "expireTime")
	public Date getExpireTime() {
		return expireTime;
	}

	public void setExpireTime(Date expireTime) {
		this.expireTime = expireTime;
	}

}

这边的
@Column注解不能忘记,括号内为映射表的字段。我将注解作为自己的代码规范,如果实在不想写那么该实体类的属性字段必须和表的字段一直。原文中没有说明这一点导致我翻了一些错误。

@GeneratedValue(strategy = GenerationType.IDENTITY)这边就是我说的自增标签,实现这个标签一定不要忘了在创建table是给id设为自增。


client:

package hibernate;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

public class Client {

	public static void main(String[] args) {
		//读取hibernate.cfg.xml文件  
		Configuration cfg = new AnnotationConfiguration().configure();
		//建立SessionFactory  
		SessionFactory factory = cfg.buildSessionFactory();

		//取得session  
		Session session = null;

		try {
			//开启session  
			session = factory.openSession();
			//开启事务  
			session.beginTransaction();

			User user = new User();
			user.setId(1);
			user.setName("Gavin");
			user.setPassword("123456");
			user.setCreateTime(new Date());
			user.setExpireTime(new Date());
			//保存User对象  
			session.save(user);
			//提交事务  
			session.getTransaction().commit();

		} catch (Exception e) {
			e.printStackTrace();
			//回滚事务  
			session.getTransaction().rollback();
		} finally {
			if (session != null) {
				if (session.isOpen()) {
					//关闭session  
					session.close();
				}
			}
		}
	}
}

原http://blog.csdn.net/jiuqiyuliang/article/details/39380465博主在client部分写的很好

最后需要配置文件hibernate.cfg.xml.此处配置这个文件时因为可自动persist数据到数据库中,如果手动persist可不配
 <!DOCTYPE hibernate-configuration PUBLIC 
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  
<hibernate-configuration>  
    <session-factory>  
        <!-- 驱动 -->  
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <!-- 数据库URL -->  
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>  
        <!-- 数据库用户名 -->  
        <property name="hibernate.connection.username">root</property>  
        <!-- 数据库密码 -->  
        <property name="hibernate.connection.password">root</property>  
        <!-- mysql的方言 -->  
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
          
        <!-- 映射文件 -->  
        <!--  <mapping resource="com/liang/hibernate/User.hbm.xml"/>  -->    
          
        <!-- 由原来的映射文件,改成实体类 -->  
        <mapping class="hibernate.User"/>  
          
    </session-factory>  
</hibernate-configuration>


  <mapping class="hibernate.User"/> 
此处配置这个属性时因为可自动persist数据到数据库中,如果手动persist可不配


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值