Hibernate List集合映射
Hibernate List集合映射
萧小蚁 发表于3年前
Hibernate List集合映射
  • 发表于 3年前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 在实体类中配置的Set集合属性一定是接口类型的 需要为List集合属性提供对象的创建和setter和getter方法 在xxx.hbm.xml关系映射文件中通过<set>标签配置Set集合属性 <list name="集合属性名称" table="表名"> <key column="外键字段" foreign-key="生成住外键关系的名称"/> <!--通过list-index提供一个用来保存当前元素加入顺序的字段,必须提供--> <list-index column="字段名称"/> <element type="数据类型" column="字段名称"/> ...
package model;

import java.util.List;


public class Student1 {

	private int id;
	private String name;
	private int age;
	private List<String> hobby;
	
	public Student1(){
		
	}

	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 int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public List<String> getHobby() {
		return hobby;
	}

	public void setHobby(List<String> hobby) {
		this.hobby = hobby;
	}
	
}
<?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>
	<!-- name属性指定类名(全限定名) table指明表名,不指明table数据默认的表名和实体名一致 -->
    <class name="model.Student1" table="stu_tab">
    	<!-- type指明当前字段的类型    name对应实体中的属性名 -->
        <id type="integer" name="id">
        	<!-- 提供ID自增的策略  native会根据数据库自行判断 -->
            <generator class="native"/>
        </id>
        <property name="name" type="string"></property>
        <property name="age" type="integer"></property>
        <!-- set 标签中name表示的是实体类中集合的属性名称 -->
        <list name="hobby" table="stu_hobby">
        	<!-- key子元素指明当前表的外键列 -->
        	<key column="stu_id" foreign-key="stu_hobby_fk"></key>
        	<!-- 索引列,指明添加数据的顺序 -->
        	<index column="position"></index>
        	<!-- element元素是用来保存集合属性中的值 -->
        	<element column="hobby_name" type="string"></element>
        </list>
    </class>
		
</hibernate-mapping>
<!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.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<!-- 数据库驱动 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		 <property name="hibernate.show_sql">true</property>
		 <!-- 其它属性配置 -->
		<!-- 指明C3P0的提供者 -->
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!-- 连接池参数的配置 -->
		<property name="hibernate.c3p0.min_size">5</property> 
	    <property name="hibernate.c3p0.max_size">30</property> 
	    <property name="hibernate.c3p0.timeout">1800</property> 
	    <property name="hibernate.c3p0.max_statements">50</property>
	    
	    <!-- 打印SQL语句到控制台 -->
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property> 
		<!-- 注册实体的对象关系映射文件 -->
		
		<mapping resource="model/Student.hbm.xml"/>
		<mapping resource="model/Student1.hbm.xml"/>
	</session-factory>
</hibernate-configuration>
package test;

import java.util.ArrayList;
import java.util.List;
import model.Student1;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;

import util.HibernateUtils;

public class Student1Test {

	@Test
	public void createTable(){
		Configuration cfg=new Configuration().configure();
		SchemaExport se=new SchemaExport(cfg);
		se.create(true, true);
	}
	@Test
	public void save(){
		Session session=HibernateUtils.getSession();
		Transaction tx=session.beginTransaction();
		
		Student1 stu=new Student1();
		
		stu.setName("zhangsan");
		stu.setAge(20);
		
		List<String>list=new ArrayList<>();
		list.add("eat");
		list.add("sleep");
		list.add("play");
		
		stu.setHobby(list);
		session.save(stu);
		tx.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void get(){
		Session session=HibernateUtils.getSession();
		Transaction tx=session.beginTransaction();
		
		Student1 stu=(Student1)session.get(Student1.class, 1);
		System.out.println(stu.getId()+"--->"+stu.getName()+"--->"+stu.getAge());
	//	for(String str:stu.getHobby()){
	//		System.out.println(str);
	//	}
		tx.commit();
		HibernateUtils.close(session);
	}
}


共有 人打赏支持
萧小蚁
粉丝 93
博文 278
码字总数 192339
×
萧小蚁
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: