原文地址:http://gaozengguang.iteye.com/blog/514273
NOTE: 此种方法DAO类必须继承:public class UserDAO extends HibernateDaoSupport
1、下载Hibernate3.0.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar等包。
2、在src下新建applicationContext.xml和base-jdbc.properties文件其内容如下:
2.1——applicationContext.xml文件
- <?xml version="1.0" encoding="utf-8"?>
- <beans default-autowire="byType"
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>classpath:base-jdbc.properties</value>
- </list>
- </property>
- </bean>
- <!-- 连接MySql数据库配置 -->
- <bean id="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <!-- <value>${jdbc.kpi.driverClassName}</value> -->
- <value>${mysql.driver}</value>
- </property>
- <property name="url">
- <!-- <value>${jdbc.kpi.url}</value> -->
- <value>${mysql.url}</value>
- </property>
- <property name="username">
- <!-- <value>${jdbc.kpi.username}</value> -->
- <value>${mysql.username}</value>
- </property>
- <property name="password">
- <!-- <value>${jdbc.kpi.password}</value> -->
- <value>${mysql.password}</value>
- </property>
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.query.factory_class">
- org.hibernate.hql.classic.ClassicQueryTranslatorFactory
- </prop>
- <prop key="hibernate.dialect">
- <!-- org.hibernate.dialect.Oracle9iDialect -->
- org.hibernate.dialect.MySQLDialect
- </prop>
- <prop key="hibernate.cache.use_query_cache">false</prop>
- <prop key="hibernate.show_sql">true</prop>
- </props>
- </property>
- <property name="annotatedClasses">
- <list>
- <value>com.test.myhibernate.user.dto.User</value>
- </list>
- </property>
- </bean>
- <bean id="UserDAO" class="com.test.myhibernate.user.dao.UserDAO">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- </beans>
2.2——base-jdbc.properties文件
- mysql.driver=com.mysql.jdbc.Driver
- mysql.url=jdbc:mysql://localhost:3306/myuser
- mysql.username=root
- mysql.password=root
3、根据项目要求在模块目录下新建几个pagekage。分别是:action,dto,dao,util。
4、在dto中新建User.java。其内容如下:
- package com.test.myhibernate.user.dto;
- import java.io.Serializable;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import javax.persistence.Table;
- @Entity
- @Table(name = "user")
- public class User implements Serializable {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- @Id
- @Column(name="id")
- private long id;
- @Column(name="username")
- private String username;
- @Column(name="password")
- private String password;
- @Column(name="name")
- private String name;
- @Column(name="age")
- private long age;
- @Column(name="sex")
- private String sex;
- @Column(name="birthday")
- private String birthday;
- public long getId() {
- return id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public long getAge() {
- return age;
- }
- public void setAge(long age) {
- this.age = age;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public String getBirthday() {
- return birthday;
- }
- public void setBirthday(String birthday) {
- this.birthday = birthday;
- }
- }
5、在dao中新建一个接口UserInterface.java。其内容如下:
- package com.test.myhibernate.user.dao;
- import java.util.List;
- import com.test.myhibernate.user.dto.User;
- public interface UserInterface {
- /**
- * @deprecated 得到所有的用户对象
- * @return
- */
- public abstract List<User> getAllUser();
- /**
- * @deprecated 通过Id查询到一个User对象。
- * @param id
- * @return
- */
- public abstract User getUserById(int id);
- /**
- * @deprecated 通过Id删除一个User对象
- * @param id
- * @return
- */
- public abstract boolean deleteUserById(int id);
- /**
- * @deprecated 添加一个User记录
- * @param user
- * @return
- */
- public abstract boolean addUser(User user);
- /**
- * @deprecated 修改一条记录
- * @param user
- * @return
- */
- public abstract boolean updateUser(User user);
- }
6、在dao中实现这个接口UserDAO.java。其内容如下:
- package com.test.myhibernate.user.dao;
- import java.util.ArrayList;
- import java.util.List;
- import org.springframework.dao.DataAccessException;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import com.test.myhibernate.user.dto.User;
- public class UserDAO extends HibernateDaoSupport implements UserInterface {
- @Override
- public boolean addUser(User user) {
- try {
- super.getHibernateTemplate().save(user);
- return true;
- } catch (DataAccessException e) {
- e.printStackTrace();
- return false;
- }
- }
- @Override
- public boolean deleteUserById(int id) {
- User user = getUserById(id);
- try {
- if (user != null) {
- super.getHibernateTemplate().delete(user);
- return true;
- } else {
- return false;
- }
- } catch (DataAccessException e) {
- e.printStackTrace();
- return false;
- }
- }
- @Override
- public List<User> getAllUser() {
- List<User> list = new ArrayList<User>();
- try{
- list = (ArrayList<User>)super.getHibernateTemplate().find("from com.test.myhibernate.user.dto.User");
- return list;
- }catch (DataAccessException e) {
- e.printStackTrace();
- return null;
- }
- }
- @Override
- public User getUserById(int id) {
- User user = null;
- try{
- user = (User)super.getHibernateTemplate().get(com.test.myhibernate.user.dto.User.class, new Long(id));
- return user;
- }
- catch (DataAccessException e) {
- e.printStackTrace();
- return null;
- }
- }
- @Override
- public boolean updateUser(User user) {
- try{
- super.getHibernateTemplate().update(user);//update使用Session不能进行修改
- return true;
- }
- catch (DataAccessException e) {
- e.printStackTrace();
- return false;
- }
- }
- }
7、在action中新建一个测试类main.java。其内容如下:
- package com.test.myhibernate.user.action;
- import java.util.ArrayList;
- import java.util.List;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.test.myhibernate.user.dao.UserDAO;
- import com.test.myhibernate.user.dto.User;
- public class main {
- /**
- * @param args
- */
- public static void main(String[] args) {
- ApplicationContext app = new ClassPathXmlApplicationContext(
- "applicationContext.xml");
- UserDAO userDAO = (UserDAO) app.getBean("UserDAO");
- User user = new User();
- user.setAge(21);
- user.setBirthday("1988-10-07");
- user.setName("xiaoguang");
- user.setPassword("xiaoguangguang");
- user.setSex("M");
- user.setUsername("xiaoguangla");
- userDAO.addUser(user);
- userDAO.deleteUserById(0);
- List<User> list = new ArrayList<User>();
- list = userDAO.getAllUser();
- int size = list.size();
- for(int i=0;i < size;i++)
- {
- System.out.println(list.get(i).getId());
- }
- user.setId(5);
- user.setUsername("dingdang");
- userDAO.updateUser(user);
- User newUser = userDAO.getUserById(1);
- System.out.println(newUser.getName());
- }
- }