// applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="addressDAO"
class="org.kyle.address.dao.impl.AddressDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/address_book">
</property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>
org/kyle/address/hibernate/beans/Address.hbm.xml
</value>
</list>
</property>
</bean>
</beans>
//IAddressDAO.java
package org.kyle.address.dao;

import java.util.List;

import org.kyle.address.hibernate.beans.Address;


public interface IAddressDAO ...{
//按用户查找所用联系人
public List findAllByUsername(final String username);
//按id 查找联系人
public Address findById(String id);
//判断某个联系人是否存在
public boolean isExist(final String username,final String name);
//插入联系人
public void insert(Address address);
//更新联系人
public void update(Address address);
//删除联系人
public void delete(String id);
}

//AddressDAO.java
package org.kyle.address.dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.kyle.address.dao.IAddressDAO;
import org.kyle.address.hibernate.beans.Address;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


public class AddressDAO extends HibernateDaoSupport implements IAddressDAO ...{


public void delete(String id) ...{
Object p = getHibernateTemplate().load(Address.class, new Integer(id));
getHibernateTemplate().delete(p);
}


public List findAllByUsername(final String username) ...{
// 按用户名

return (List) getHibernateTemplate().execute(new HibernateCallback() ...{
public Object doInHibernate(Session session)

throws HibernateException ...{
List result = session.createCriteria(Address.class).add(
Restrictions.eq("username", username)).list();
return result;
}

});
}

// 按ID查找联系人

public Address findById(String id) ...{

return (Address) getHibernateTemplate().get(Address.class,
new Integer(id));
}

// 插入联系人

public void insert(Address address) ...{
getHibernateTemplate().save(address);

}

// 判断联系人是否存在

public boolean isExist(final String username, final String name) ...{
List list = (List) getHibernateTemplate().execute(

new HibernateCallback() ...{

public Object doInHibernate(Session session)

throws HibernateException, SQLException ...{
List result = session.createCriteria(Address.class)
.add(Restrictions.eq("username", username))
.add(Restrictions.eq("name", name)).list();
return result;
}
});

if (list.size() > 0) ...{
return true;
}
return false;
}

// 更新联系人

public void update(Address address) ...{
getHibernateTemplate().update(address);

}

}

//测试类 AddressDAOTest.java
package org.kyle.address.dao.impl.test;

import java.util.Iterator;
import java.util.List;

import org.kyle.address.dao.IAddressDAO;
import org.kyle.address.dao.impl.AddressDAO;
import org.kyle.address.hibernate.beans.Address;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import junit.framework.TestCase;


public class AddressDAOTest extends TestCase ...{
public IAddressDAO addressDAO;


public void setUp() throws Exception ...{
super.setUp();
addressDAO = new AddressDAO();
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"E:/web项目/addressBook/WebRoot/WEB-INF/applicationContext.xml");
addressDAO = (IAddressDAO) ctx.getBean("addressDAO");
}


public void test_Insert() ...{
Address address = new Address();
address.setUsername("zhaohui");
address.setName("kyle");
address.setSex("2");
address.setQq("123456789");
address.setMobile("13573178648");
address.setCompany("intel");
address.setPostcode("4646454");
address.setAddress("ShangHai");
addressDAO.insert(address);
address = addressDAO.findById("2");
assertNotNull(address);

}


public void test_FindAllByUsername() ...{
List<Address> list = addressDAO.findAllByUsername("zhaohui");
assertTrue(list.size() > 0);

for (Address address : list) ...{
assertNotNull(address);
}

}

public void test_FindById()...{
Address address=addressDAO.findById("2");
assertNotNull(address);
}

public void test_Update()...{
Address address = new Address();
address.setId(new Integer(2));
address.setUsername("zhaohui");
address.setName("jack");
address.setSex("2");
address.setQq("123456789");
address.setMobile("13573178648");
address.setCompany("Microsoft");
address.setPostcode("4646454");
address.setAddress("ShangHai");
addressDAO.update(address);
Address address2=addressDAO.findById("2");
assertTrue(address.getCompany().equals("Microsoft"));
}

public void test_Delete()...{
addressDAO.delete("22");
Address address=addressDAO.findById("22");
assertNull(address);
}

public void test_IsExist()...{
boolean b=addressDAO.isExist("zhaohui", "kyle");
assertEquals(b,true);
}

}
