Spring+Hibernate集成开发只1对多实例

数据库脚本:

 

create   table  customer (id  varchar ( 10 primary   key ,name  varchar ( 10 )); create   table  address (id  varchar ( 10 primary   key ,                       detail  varchar ( 10 ),                       customerid  varchar ( 10 ),                        foreign   key (customerid)  references  customer(id)); insert   into  customer  values (" 1 ","john"); insert   into  customer  values (" 2 ","marry"); insert   into  customer  values (" 3 ","cathy"); insert   into  address  values (" 1 ","beijng"," 1 "); insert   into  address  values (" 2 ","tianjin"," 1 "); insert   into  address  values (" 3 ","shanghai"," 2 "); insert   into  address  values (" 4 ","guangzhou"," 2 "); insert   into  address  values (" 5 ","chongqing"," 3 "); insert   into  address  values (" 6 ","shenzhen"," 3 "); 或者创建表后用如下语句增加外键约束 alter   table  address  add   constraint  pf  foreign   key (customerid)  references  customer(id);

 

Domain对象

 

package  ch9.SimpleOneToMany; import  java.util.HashSet; import  java.util.Set; /**  * Customer generated by MyEclipse Persistence Tools  */ public   class  Customer  implements  java.io.Serializable  {     // Fields     private String id;     private String name;     private Set addresses = new HashSet(0);     // Constructors     /** default constructor */     public Customer() {     }     /** minimal constructor */     public Customer(String id) {         this.id = id;     }     /** full constructor */     public Customer(String id, String name, Set addresses) {         this.id = id;         this.name = name;         this.addresses = addresses;     }     // Property accessors     public String getId() {         return this.id;     }     public void setId(String id) {         this.id = id;     }     public String getName() {         return this.name;     }     public void setName(String name) {         this.name = name;     }     public Set getAddresses() {         return this.addresses;     }     public void setAddresses(Set addresses) {         this.addresses = addresses;     } }

 

 

package  ch9.SimpleOneToMany; /**  * Address generated by MyEclipse Persistence Tools  */ public   class  Address  implements  java.io.Serializable  {     // Fields     private String id;     private Customer customer;     private String detail;     // Constructors     /** default constructor */     public Address() {     }     /** minimal constructor */     public Address(String id) {         this.id = id;     }     /** full constructor */     public Address(String id, Customer customer, String detail) {         this.id = id;         this.customer = customer;         this.detail = detail;     }     // Property accessors     public String getId() {         return this.id;     }     public void setId(String id) {         this.id = id;     }     public Customer getCustomer() {         return this.customer;     }     public void setCustomer(Customer customer) {         this.customer = customer;     }     public String getDetail() {         return this.detail;     }     public void setDetail(String detail) {         this.detail = detail;     } }

 

hbm文件:

 

<? xml version="1.0" encoding="utf-8" ?> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!--       Mapping file autogenerated by MyEclipse Persistence Tools --> < hibernate-mapping >      < class  name ="ch9.SimpleOneToMany.Customer"  table ="customer"  catalog ="spring" >          < id  name ="id"  type ="java.lang.String" >              < column  name ="id"  length ="10"   />              < generator  class ="assigned"   />          </ id >          < property  name ="name"  type ="java.lang.String" >              < column  name ="name"  length ="10"   />          </ property >          < set  name ="addresses"  inverse ="true"  lazy ="false" >              < key >                  < column  name ="customerid"  length ="10"   />              </ key >              < one-to-many  class ="ch9.SimpleOneToMany.Address"   />          </ set >      </ class > </ hibernate-mapping >

 

 

<? xml version="1.0" encoding="utf-8" ?> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!--       Mapping file autogenerated by MyEclipse Persistence Tools --> < hibernate-mapping >      < class  name ="ch9.SimpleOneToMany.Address"  table ="address"  catalog ="spring" >          < id  name ="id"  type ="java.lang.String" >              < column  name ="id"  length ="10"   />              < generator  class ="assigned"   />          </ id >          < many-to-one  name ="customer"  class ="ch9.SimpleOneToMany.Customer"  lazy ="false"   >              < column  name ="customerid"  length ="10"   />          </ many-to-one >          < property  name ="detail"  type ="java.lang.String" >              < column  name ="detail"  length ="10"   />          </ property >      </ class > </ hibernate-mapping >

 

DAO接口:

 

package  ch9.SimpleOneToMany; import  java.util.List; public   interface  IDAO  {   public List getAllCustomer(); }

 

DAO实现:

 

package  ch9.SimpleOneToMany; import  java.util.ArrayList; import  java.util.List; import  org.springframework.orm.hibernate3.support.HibernateDaoSupport; public   class  TestDAOImpl  extends  HibernateDaoSupport  implements  IDAO  {     public List getAllCustomer() {         return getHibernateTemplate().find("from Customer");              } }

 

配置文件:

 

<? xml version="1.0" encoding="UTF-8" ?> < beans      xmlns ="http://www.springframework.org/schema/beans"     xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" > < bean  id ="dataSource"  class ="org.apache.commons.dbcp.BasicDataSource" >    < property  name ="driverClassName" >      < value > com.mysql.jdbc.Driver </ value >    </ property >    < property  name ="username" >      < value > root </ value >    </ property >    < property  name ="password" >      < value > 1234 </ value >    </ property >    < property  name ="url" >      < value > jdbc:mysql://localhost:3306/spring </ value >    </ property > </ bean > < bean  id ="sessionFactory"  class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >    < property  name ="dataSource" >      < ref  bean ="dataSource" />    </ property >    < property  name ="mappingResources" >      < list >        < value > ch9/SimpleOneToMany/Address.hbm.xml </ value >        < value > ch9/SimpleOneToMany/Customer.hbm.xml </ value >      </ list >    </ property >    < property  name ="hibernateProperties" >      < props >        < prop  key ="hibernate.dialect" > org.hibernate.dialect.MySQL5Dialect </ prop >        < prop  key ="hibernate.show_sql" > true </ prop >      </ props >    </ property > </ bean >      < bean  id ="testDAO"  class ="ch9.SimpleOneToMany.TestDAOImpl" >        < property  name ="sessionFactory" >          < ref  bean ="sessionFactory" />        </ property >    </ bean > </ beans >

 

测试代码:

 

package  ch9.SimpleOneToMany; import  java.util.ArrayList; import  java.util.Iterator; import  java.util.List; import  org.springframework.context.ApplicationContext; import  org.springframework.context.support.ClassPathXmlApplicationContext; public   class  Test  {     /**      * @param args      */     public static void main(String[] args) {         ApplicationContext context=new ClassPathXmlApplicationContext("ch9/SimpleOneToMany/applicationContext.xml");         TestDAOImpl testDAOImpl=(TestDAOImpl)context.getBean("testDAO");                               List result=new ArrayList();         result=testDAOImpl.getAllCustomer();         for (Iterator iter = result.iterator(); iter.hasNext();) {             Customer element = (Customer) iter.next();             System.out.println(element.getName()+element.getAddresses().size());             Iterator iter1=element.getAddresses().iterator();             while(iter1.hasNext()){                Address element1 = (Address) iter1.next();                 System.out.println("--"+element1.getDetail());             }         }                   } }

 

结果:

Hibernate: select customer0_.id as id1_, customer0_.name as name1_ from spring.customer customer0_ Hibernate: select addresses0_.customerid as customerid1_, addresses0_.id as id1_, addresses0_.id as id0_0_, addresses0_.customerid as customerid0_0_, addresses0_.detail as detail0_0_ from spring.address addresses0_ where addresses0_.customerid=? Hibernate: select addresses0_.customerid as customerid1_, addresses0_.id as id1_, addresses0_.id as id0_0_, addresses0_.customerid as customerid0_0_, addresses0_.detail as detail0_0_ from spring.address addresses0_ where addresses0_.customerid=? Hibernate: select addresses0_.customerid as customerid1_, addresses0_.id as id1_, addresses0_.id as id0_0_, addresses0_.customerid as customerid0_0_, addresses0_.detail as detail0_0_ from spring.address addresses0_ where addresses0_.customerid=? john2 --tianjin --beijng marry2 --guangzhou --shanghai cathy2 --shenzhen --chongqing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值