Hibernate Named Query 2

applicationContext.xml:

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.        xmlns:p="http://www.springframework.org/schema/p"  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
  6.                            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  7.   
  8.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  9.         <property name="driverClassName" value="com.mysql.jdbc.Driver">  
  10.         </property>  
  11.         <property name="url" value="jdbc:mysql://localhost:3306/test"></property>  
  12.         <property name="username" value="root"></property>  
  13.         <property name="password" value="root"></property>  
  14.     </bean>  
  15.   
  16.     <bean id="sessionFactory"  
  17.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  18.         <property name="dataSource">  
  19.             <ref bean="dataSource" />  
  20.         </property>  
  21.         <property name="hibernateProperties">  
  22.             <props>  
  23.                 <prop key="hibernate.dialect">  
  24.                     org.hibernate.dialect.MySQLDialect  
  25.                 </prop>  
  26.             </props>  
  27.         </property>  
  28.         <property name="mappingDirectoryLocations">  
  29.             <value>classpath:config/hibernate/hbm/</value>  
  30.         </property>  
  31.     </bean>  
  32.   
  33.     <bean id="userDao" class="com.my.dao.UserDao">  
  34.         <property name="sessionFactory" ref="sessionFactory"></property>  
  35.     </bean>  
  36.   
  37.     <bean id="userService" class="com.my.service.UserService">  
  38.         <property name="userDao" ref="userDao"></property>  
  39.     </bean>  
  40. </beans>  
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	   xmlns:p="http://www.springframework.org/schema/p"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans 
	   					   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<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/test"></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="mappingDirectoryLocations">
			<value>classpath:config/hibernate/hbm/</value>
		</property>
	</bean>

	<bean id="userDao" class="com.my.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<bean id="userService" class="com.my.service.UserService">
		<property name="userDao" ref="userDao"></property>
	</bean>
</beans>

UserNamed.hbm.xml:

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >  
  3. <hibernate-mapping>  
  4.     <sql-query name="queryByName">  
  5.         select   
  6.             pk_id,f_name,f_createTime,f_email   
  7.         from   
  8.             t_hibernate_named   
  9.         where   
  10.             f_name = :name    
  11.     </sql-query>  
  12.       
  13.     <sql-query name="queryByStartDateToEndDate">  
  14.         select   
  15.             pk_id,f_name,f_createTime,f_email  
  16.         from  
  17.             t_hibernate_named  
  18.         where  
  19.             f_createTime between :startDate and :endDate  
  20.     </sql-query>  
  21. </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" >
<hibernate-mapping>
	<sql-query name="queryByName">
		select 
			pk_id,f_name,f_createTime,f_email 
		from 
			t_hibernate_named 
		where 
			f_name = :name  
	</sql-query>
	
	<sql-query name="queryByStartDateToEndDate">
		select 
			pk_id,f_name,f_createTime,f_email
		from
			t_hibernate_named
		where
			f_createTime between :startDate and :endDate
	</sql-query>
</hibernate-mapping>

一些日期处理: DateUtils.java:

Java代码 复制代码 收藏代码
  1. package com.my.commons.time;  
  2.   
  3. import java.sql.Timestamp;  
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Calendar;  
  7. import java.util.Date;  
  8.   
  9. import org.apache.commons.lang.time.DateFormatUtils;  
  10.   
  11. public class DateUtils extends DateFormatUtils {  
  12.     // 得到24小时制的年月日时分秒  
  13.     public static final String YYYY_MM_DD_HH24_MM_SS = "yyyy-MM-dd HH:mm:ss";  
  14.   
  15.     /** 
  16.      * 将日期时间字符串转换为时间型 
  17.      *  
  18.      * @param srcDateTime 
  19.      *            待转化的日期时间字符串. 
  20.      *  
  21.      * @return 转化后的日期时间. 
  22.      */  
  23.     public static Date string2Date(String srcDateTime) {  
  24.         Date date = null;  
  25.         try {  
  26.             date = new SimpleDateFormat(YYYY_MM_DD_HH24_MM_SS)  
  27.                     .parse(srcDateTime);  
  28.         } catch (ParseException e) {  
  29.             e.printStackTrace();  
  30.         }  
  31.         return date;  
  32.     }  
  33.   
  34.     /** 
  35.      * 将Date转换为Timestamp 
  36.      *  
  37.      * @param date 
  38.      * @return 
  39.      */  
  40.     public static Timestamp getTimestamp(Date date) {  
  41.         return Timestamp.valueOf(format(date, YYYY_MM_DD_HH24_MM_SS));  
  42.     }  
  43.   
  44.     /** 
  45.      * 将Date转换为String 
  46.      *  
  47.      * @param date 
  48.      * @return 
  49.      */  
  50.     public static String formatYMDH24MS(Date date) {  
  51.         return format(date, YYYY_MM_DD_HH24_MM_SS);  
  52.     }  
  53.   
  54.     /** 
  55.      * 将Timestamp转换为String 
  56.      *  
  57.      * @param timestamp 
  58.      * @return 
  59.      */  
  60.     public static String formatYMDH24MS(Timestamp timestamp) {  
  61.         return format(timestamp, YYYY_MM_DD_HH24_MM_SS);  
  62.     }  
  63.   
  64.     /** 
  65.      * 根据 日期时间和显示模式得到String 
  66.      *  
  67.      * @param timestamp 
  68.      * @param pattern 
  69.      * @return 
  70.      */  
  71.     public static String format(Timestamp timestamp, String pattern) {  
  72.         return format(timestamp.getTime(), pattern);  
  73.     }  
  74. }  
package com.my.commons.time;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.lang.time.DateFormatUtils;

public class DateUtils extends DateFormatUtils {
	// 得到24小时制的年月日时分秒
	public static final String YYYY_MM_DD_HH24_MM_SS = "yyyy-MM-dd HH:mm:ss";

	/**
	 * 将日期时间字符串转换为时间型
	 * 
	 * @param srcDateTime
	 *            待转化的日期时间字符串.
	 * 
	 * @return 转化后的日期时间.
	 */
	public static Date string2Date(String srcDateTime) {
		Date date = null;
		try {
			date = new SimpleDateFormat(YYYY_MM_DD_HH24_MM_SS)
					.parse(srcDateTime);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 将Date转换为Timestamp
	 * 
	 * @param date
	 * @return
	 */
	public static Timestamp getTimestamp(Date date) {
		return Timestamp.valueOf(format(date, YYYY_MM_DD_HH24_MM_SS));
	}

	/**
	 * 将Date转换为String
	 * 
	 * @param date
	 * @return
	 */
	public static String formatYMDH24MS(Date date) {
		return format(date, YYYY_MM_DD_HH24_MM_SS);
	}

	/**
	 * 将Timestamp转换为String
	 * 
	 * @param timestamp
	 * @return
	 */
	public static String formatYMDH24MS(Timestamp timestamp) {
		return format(timestamp, YYYY_MM_DD_HH24_MM_SS);
	}

	/**
	 * 根据 日期时间和显示模式得到String
	 * 
	 * @param timestamp
	 * @param pattern
	 * @return
	 */
	public static String format(Timestamp timestamp, String pattern) {
		return format(timestamp.getTime(), pattern);
	}
}

TimeZone.java:

Java代码 复制代码 收藏代码
  1. package com.my.commons.time;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.Date;  
  5.   
  6. public class TimeZone implements Serializable {  
  7.     private static final long serialVersionUID = 1L;  
  8.   
  9.     // 起始日期  
  10.     private Date startDate;  
  11.     // 结束日期  
  12.     private Date endDate;  
  13.   
  14. //省略get、set和构造方法。  
  15. }  
package com.my.commons.time;

import java.io.Serializable;
import java.util.Date;

public class TimeZone implements Serializable {
	private static final long serialVersionUID = 1L;

	// 起始日期
	private Date startDate;
	// 结束日期
	private Date endDate;

//省略get、set和构造方法。
}

UserDao.java:

Java代码 复制代码 收藏代码
  1. package com.my.dao;  
  2.   
  3. import java.sql.Timestamp;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import org.hibernate.Query;  
  8. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  9.   
  10. import com.my.commons.time.TimeZone;  
  11. import com.my.po.User;  
  12.   
  13. @SuppressWarnings("unchecked")  
  14. public class UserDao extends HibernateDaoSupport {  
  15.     /** 
  16.      * 根据名称查询 
  17.      *  
  18.      * @param name 
  19.      * @return 
  20.      */  
  21.     public List queryByName(String name) {  
  22.          //"queryByName"就是UserNamed.hbm.xml里的name,  
  23.         Query queryNamed = getSession().getNamedQuery("queryByName");  
  24.          //"name"就是UserNamed.hbm.xml里name为queryByName的 :name 。  
  25.         queryNamed.setString("name", name);  
  26.         List result = queryNamed.list();  
  27.   
  28.         List resultList = new ArrayList();  
  29.         User user = null;  
  30.   
  31.         for (Object obj : result) {  
  32.             user = new User();  
  33.             Object[] o = (Object[]) obj;  
  34.   
  35.             user.setId((Integer) o[0]);  
  36.             user.setName((String) o[1]);  
  37.             user.setCreateTime((Timestamp) o[2]);  
  38.             user.setEmail((String) o[3]);  
  39.   
  40.             resultList.add(user);  
  41.         }  
  42.         return resultList;  
  43.     }  
  44.     /** 
  45.      * 根据指定日期查询 
  46.      * @param timeZone 
  47.      * @return 
  48.      */  
  49.     public List queryByStartDateToEndDate(TimeZone timeZone){  
  50.         Query queryNamed = getSession().getNamedQuery("queryByStartDateToEndDate");  
  51.         queryNamed.setTimestamp("startDate", timeZone.getStartDate());  
  52.         queryNamed.setTimestamp("endDate", timeZone.getEndDate());  
  53.         List result = queryNamed.list();  
  54.           
  55.         List resultList = new ArrayList();  
  56.         User user = null;  
  57.           
  58.         for(Object obj : result){  
  59.             user = new User();  
  60.             Object[] o = (Object[])obj;  
  61.               
  62.             user.setId((Integer)o[0]);  
  63.             user.setName((String)o[1]);  
  64.             user.setCreateTime((Timestamp)o[2]);  
  65.             user.setEmail((String)o[3]);  
  66.               
  67.             resultList.add(user);  
  68.         }  
  69.         return resultList;  
  70.     }  
  71. }  
package com.my.dao;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.my.commons.time.TimeZone;
import com.my.po.User;

@SuppressWarnings("unchecked")
public class UserDao extends HibernateDaoSupport {
	/**
	 * 根据名称查询
	 * 
	 * @param name
	 * @return
	 */
	public List queryByName(String name) {
         //"queryByName"就是UserNamed.hbm.xml里的name,
		Query queryNamed = getSession().getNamedQuery("queryByName");
         //"name"就是UserNamed.hbm.xml里name为queryByName的 :name 。
		queryNamed.setString("name", name);
		List result = queryNamed.list();

		List resultList = new ArrayList();
		User user = null;

		for (Object obj : result) {
			user = new User();
			Object[] o = (Object[]) obj;

			user.setId((Integer) o[0]);
			user.setName((String) o[1]);
			user.setCreateTime((Timestamp) o[2]);
			user.setEmail((String) o[3]);

			resultList.add(user);
		}
		return resultList;
	}
	/**
	 * 根据指定日期查询
	 * @param timeZone
	 * @return
	 */
	public List queryByStartDateToEndDate(TimeZone timeZone){
		Query queryNamed = getSession().getNamedQuery("queryByStartDateToEndDate");
		queryNamed.setTimestamp("startDate", timeZone.getStartDate());
		queryNamed.setTimestamp("endDate", timeZone.getEndDate());
		List result = queryNamed.list();
		
		List resultList = new ArrayList();
		User user = null;
		
		for(Object obj : result){
			user = new User();
			Object[] o = (Object[])obj;
			
			user.setId((Integer)o[0]);
			user.setName((String)o[1]);
			user.setCreateTime((Timestamp)o[2]);
			user.setEmail((String)o[3]);
			
			resultList.add(user);
		}
		return resultList;
	}
}

UserService.java:

Java代码 复制代码 收藏代码
  1. package com.my.service;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.my.commons.time.TimeZone;  
  6. import com.my.dao.UserDao;  
  7. import com.my.po.User;  
  8.   
  9. @SuppressWarnings("unchecked")  
  10. public class UserService {  
  11.     private UserDao userDao;  
  12.   
  13.     /** 
  14.      * 根据名称查询 
  15.      *  
  16.      * @return 
  17.      */  
  18.     public List<User> getByName(String name) {  
  19.         List<User> userList = userDao.queryByName(name);  
  20.         if (userList.size() > 0) {  
  21.             return userList;  
  22.         }  
  23.         return null;  
  24.     }  
  25.   
  26.     /** 
  27.      * 根据指定日期查询 
  28.      *  
  29.      * @param timeZone 
  30.      * @return 
  31.      */  
  32.     public List<User> getByStartDateToEndDate(TimeZone timeZone) {  
  33.         List<User> userList = userDao.queryByStartDateToEndDate(timeZone);  
  34.         if (userList.size() > 0) {  
  35.             return userList;  
  36.         }  
  37.         return null;  
  38.     }  
  39.   
  40.     public void setUserDao(UserDao userDao) {  
  41.         this.userDao = userDao;  
  42.     }  
  43. }  
package com.my.service;

import java.util.List;

import com.my.commons.time.TimeZone;
import com.my.dao.UserDao;
import com.my.po.User;

@SuppressWarnings("unchecked")
public class UserService {
	private UserDao userDao;

	/**
	 * 根据名称查询
	 * 
	 * @return
	 */
	public List<User> getByName(String name) {
		List<User> userList = userDao.queryByName(name);
		if (userList.size() > 0) {
			return userList;
		}
		return null;
	}

	/**
	 * 根据指定日期查询
	 * 
	 * @param timeZone
	 * @return
	 */
	public List<User> getByStartDateToEndDate(TimeZone timeZone) {
		List<User> userList = userDao.queryByStartDateToEndDate(timeZone);
		if (userList.size() > 0) {
			return userList;
		}
		return null;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
}

User.java:

Java代码 复制代码 收藏代码
  1. package com.my.po;  
  2.   
  3. import java.io.Serializable;  
  4. import java.sql.Timestamp;  
  5.   
  6. public class User implements Serializable{  
  7.     private static final long serialVersionUID = 1L;  
  8.       
  9.     // ID  
  10.     private int id;  
  11.     // 名称  
  12.     private String name;  
  13.     // 创建日期  
  14.     private Timestamp createTime;  
  15.     // 电子邮箱  
  16.     private String email;  
  17. //省略get、set和构造方法。  
  18. }  
package com.my.po;

import java.io.Serializable;
import java.sql.Timestamp;

public class User implements Serializable{
	private static final long serialVersionUID = 1L;
	
	// ID
	private int id;
	// 名称
	private String name;
	// 创建日期
	private Timestamp createTime;
	// 电子邮箱
	private String email;
//省略get、set和构造方法。
}

UserServiceTest.java:

Java代码 复制代码 收藏代码
  1. package com.my.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  6.   
  7. import com.my.commons.time.DateUtils;  
  8. import com.my.commons.time.TimeZone;  
  9. import com.my.po.User;  
  10. import com.my.service.UserService;  
  11.   
  12. public class UserServiceTest {  
  13.   
  14.     /** 
  15.      * @param args 
  16.      */  
  17.     public static void main(String[] args) {  
  18.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  19.                 "applicationContext.xml");  
  20.         UserService userService = (UserService) context.getBean("userService");  
  21.   
  22.         UserServiceTest.testGetByName(userService);  
  23.         // UserServiceTest.testGetByStartDateToEndDate(userService);  
  24.     }  
  25.   
  26.     private static void testGetByName(UserService us) {  
  27.         List<User> userList = us.getByName("hao");  
  28.         for (User user : userList) {  
  29.             System.out.println(user.getId() + " , " + user.getName() + " , "  
  30.                     + user.getCreateTime() + " , " + user.getEmail());  
  31.         }  
  32.     }  
  33.   
  34.     private static void testGetByStartDateToEndDate(UserService us) {  
  35.         List<User> userList = us.getByStartDateToEndDate(new TimeZone(DateUtils  
  36.                 .string2Date("2011-02-07 10:00:00"), DateUtils  
  37.                 .string2Date("2011-03-09 23:15:59")));  
  38.         for (User user : userList) {  
  39.             System.out.println(user.getId() + " , " + user.getName() + " , "  
  40.                     + user.getCreateTime() + " , " + user.getEmail());  
  41.         }  
  42.     }  
  43.   
posted @ 2014-11-04 19:47  Bruce-Li  阅读(280)  评论(0编辑  收藏  举报