表中添加字段组成关系component的使用

1.项目示图如下:


2.Bank类:

package com.eduask.pojo;
import java.util.Date;
//Bank表的字段为 id 、name time
public class Bank{
private int id;
private String name;
private Date time;
private Pay pay;
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 Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public Pay getPay() {
return pay;
}
public void setPay(Pay pay) {
this.pay = pay;
}
@Override
public String toString() {
return "Bank [id=" + id + ", name=" + name + ", time=" + time + ", pay="
+ pay + "]";
}
public Bank() {
super();
// TODO Auto-generated constructor stub
}
public Bank(int id, String name, Date time, Pay pay) {
super();
this.id = id;
this.name = name;
this.time = time;
this.pay = pay;
}
}

3.Pay类:

package com.eduask.pojo;


public class Pay {
private int year;
private int month;
private int day;
private Bank bank;
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public Bank getBank() {
return bank;
}
public void setBank(Bank bank) {
this.bank = bank;
}
@Override
public String toString() {
return "Pay [year=" + year + ", month=" + month + ", day=" + day
+ ", bank=" + bank + "]";
}
public Pay(int year, int month, int day, Bank bank) {
super();
this.year = year;
this.month = month;
this.day = day;
this.bank = bank;
}
public Pay() {
super();
// TODO Auto-generated constructor stub
}

}

4.Bank.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-7-15 14:21:30 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<!-- 配置指定的类,会自动创建表,其表名就是类名的小写,然我们也可以自己来指定表名
通过table=""属性就可以指定自己想要的表名
-->
<class name="com.eduask.pojo.Bank">
<!-- id就是类中的唯一标识 -->
<id name="id" >
<!-- 自动生成id ,class=native 底层是根据不同数据库生成主键的方式自动生成 -->
<generator class="native" />
</id>
<!-- name是类中的属性
type 是指定数据库中字段的类型
column 数据库的字段
如果不指定类型和字段名那么数据库中的字段是根据类中的属性类型和名字来定的
-->
<!--bank类中的属性 -->
<property name="name"></property>
<property name="time"></property>
<!-- 组成关系 -->
<component name="pay">
<parent name="bank"/>
<property name="year"></property>
<property name="month"></property>
<property name="day"></property>
</component>
</class>
</hibernate-mapping>

5.hibernate.cfg.xml

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

<!-- 配置数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

<!-- 配置自动创建表
create:先把原有表删除然后再创建一个新的表,之后执行session的方法
create-drop:先把原有表删除然后再创建一个新的表,当sessionfactory关闭之后,这张表也随之删除
update:如果表存在就执行session中的方法,否则先创建然后在执行session中的方法
validate:不会自动生成表,字段和传入的数据不匹配就会报错
-->
<property name="hbm2ddl.auto">update</property>

<!-- 配置在控制台中打印sql -->
<property name="show_sql">true</property>

<!-- 配置打印的sql 格式化 -->
<property name="format_sql">true</property>



<!-- 配置连接池c3p0 -->
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>

<!-- 配置加载类映射的文件 -->
<mapping resource="com/eduask/pojo/Bank.hbm.xml"/>
</session-factory>
</hibernate-configuration>

6.BankTest测试类:

package com.eduask.test;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Before;
import org.junit.Test;
import com.eduask.pojo.Bank;
import com.eduask.pojo.Pay;
import com.eduask.util.HibernateUtil;
public class BankTest {
private SessionFactory sessionFactory;
@Before
public void setUp() throws Exception {
//使用hibernateUtil工具类来创建单例的sessionFactory 对象
//再使用sessionFactory 对象来创建session
//工具类提供一个创建session的方法
sessionFactory=HibernateUtil.getSessionFactory();
}
//增加;
@Test
public void testInsert(){
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
Pay p=new Pay();
p.setDay(22);
p.setMonth(7);
p.setYear(2016);
Bank b=new Bank();
b.setName("中国农业银行");
b.setTime(new Date());
b.setPay(p);
session.save(b);
tx.commit();
session.close();
}

}

7.工具类,这里就不用写了。

8.程序运行之前,数据库中没有bank这个表;


9.程序运行如下:


10.查看数据库:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值