使用注解创建mysql文件_hibernate 利用注解生成数据库表以及插入数据

由本人在学习中总结出来,若有不妥还望大家留下意见呀~

1.java实体类注解

@Entity

@Table(name="Category")

@Id

@GeneratedValue  默认为sql语句中的主键自增长

@ManyToOne(fetch= FetchType.LAZY)  //只生成一条sql语句,简单语句合并

在hibernate.cfg.xml中配置实体类

若不适用注解,则配置xml文件,如之前所试的stu.hbm.xml

2.生成table语句

新建一个java类,使其根据注解生成sql语句

//若不是用的注解而是用的xml连接类和表格的,则应为 new Configuration().configure()

SchemaExport se = new SchemaExport(new AnnotationConfiguration().configure());

se.setOutputFile("createTable.sql");

se.create(true, true);

3.生成table数据

private static SessionFactory sf = (new AnnotationConfiguration().configure()).buildSessionFactory();

Session session = sf.openSession();

//开启事务

session.beginTransaction();

。。。。

session.save(c);

session.getTransaction().commit();

session.close();

具体代码实现:

1.java注解实体类

package com.sl.entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.ManyToOne;

@Entity

public class Msg {

private int id;

private String count;

/**所属主题*/

private Topic topic;

@Id

@GeneratedValue

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCount() {

return count;

}

public void setCount(String count) {

this.count = count;

}

@ManyToOne

public Topic getTopic() {

return topic;

}

public void setTopic(Topic topic) {

this.topic = topic;

}

}

2.hibernate.cfg.xml文件

3.生成数据库表的java文件

package test;

import org.hibernate.cfg.AnnotationConfiguration;

import org.hibernate.cfg.Configuration;

import org.hibernate.tool.hbm2ddl.SchemaExport;

public class CreateTable {

// private static SessionFactory sf;

public static void main(String[] args) {

SchemaExport se = new SchemaExport(new AnnotationConfiguration().configure());

se.setOutputFile("createTable.sql");

se.create(true, true);

}

}

4.数据插入到数据表

package test;

import java.util.Date;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

import org.hibernate.cfg.Configuration;

import com.sl.entity.Category;

import com.sl.entity.Msg;

import com.sl.entity.Topic;

public class InitTable {

private static SessionFactory sf = (new AnnotationConfiguration().configure()).buildSessionFactory();

public static void main(String[] args) {

Session session = sf.openSession();

//开启事务

session.beginTransaction();

for (int i = 0; i < 10; i++) {

Category c = new Category();

c.setName("bankuai"+i);

session.save(c);

}

for (int i = 0; i < 10; i++) {

Category c = new Category();

c.setId(1);

Topic t = new Topic();

t.setCategory(c);

t.setTitle("theme"+i);

t.setCreateDate(new Date());

session.save(t);

}

for (int i = 0; i < 10; i++) {

Topic t = new Topic();

t.setId(1);

Msg m =new Msg();

m.setTopic(t);

m.setCount("msg"+i);

session.save(m);

}

session.getTransaction().commit();

session.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值