首页 » Java » 使用Hibernate操作修改mysql数据

使用Hibernate操作修改mysql数据

原文 http://blog.csdn.net/qq_34381175/article/details/78018602

2017-09-18 15:20:18阅读(237)

本文由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包

使用Hibernate操作修改<a href=mysql数据" src="" alt="">


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

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可不配

使用Hibernate操作修改mysql数据

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹

天天可领!最高99块!土豪站长12月发红包啦!

关闭
支付宝红包