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、付费专栏及课程。

余额充值