Spring中常用的操作数据库的(Dao)方法

来源:互联网 发布:淘宝商品链接在哪 编辑:程序博客网 时间:2024/05/01 06:49
  1. Spring中常用的操作数据库的(Dao)方法
  2. 接口:
  3. public interface BaseDAO {
  4.      void save(T instance);
  5.      void update(T instance);
  6.      void delete(T instance);
  7.      T get(String id);
  8.      List<T> findAll();
  9.      List<T> findByExample(T instance);
  10.      int bulkUpdate(String hql);
  11.      int bulkUpdate(String hql, Object value);
  12.      int bulkUpdate(String hql, Object[] value);
  13.      List<T> find(String queryString);
  14.      List<T> find(String queryString, Object obj);
  15.      List<T> find(String queryString, Object[] obj);
  16.      List<T> findByNamedParam(String queryString, String paramName, Object value);
  17.      List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values);
  18.      List<T> findByNamedQuery(String queryName);
  19.      List<T> findByNamedQuery(String queryName, Object value);
  20.      List<T> findByNamedQuery(String queryName, Object[] values);
  21.      List<T> findByProperty(String property, Object value);
  22.      List<T> findByPagination(final T t, final int firstResult, final int maxResult);
  23.      int countByPagination(final T t);
  24. }
  25. 实现类:
  26. import java.sql.*;
  27. import java.util.List;
  28. import org.hibernate.*;
  29. import org.hibernate.criterion.*;
  30. import org.springframework.orm.hibernate3.*;
  31. import org.springframework.orm.hibernate3.support.*;
  32. import com.vo.T;
  33. public abstract class BaseDAOImpl extends HibernateDaoSupport implements BaseDAO{ 
  34. protected abstract Class type();  //反射方法调用类 
  35. // 保存 
  36. public void save(T instance) { 
  37. getHibernateTemplate().save(instance); 
  38. // 更新 
  39. public void update(T instance) { 
  40. getHibernateTemplate().update(instance); 
  41. // 删除 
  42. public void delete(T instance) { 
  43. getHibernateTemplate().delete(instance); 
  44. // 根据ID查询 
  45. @SuppressWarnings("unchecked"
  46. public T get(String id) { 
  47. return (T) getHibernateTemplate().get(type(), id); 
  48. // 查询所有 
  49. @SuppressWarnings("unchecked"
  50. public List<T> findAll() { 
  51. return getHibernateTemplate().loadAll(type());
  52. // 根据例子查询 
  53. @SuppressWarnings("unchecked")
  54. public List<T> findByExample(T instance) { 
  55. return getHibernateTemplate().findByExample(instance); 
  56. // 根据HQL语句进行update操作等 
  57. public int bulkUpdate(String hql) { 
  58. return getHibernateTemplate().bulkUpdate(hql); 
  59. // 根据HQL语句进行update操作等 
  60. public int bulkUpdate(String hql, Object value) { 
  61. return getHibernateTemplate().bulkUpdate(hql, value); 
  62. // 根据HQL语句进行update操作等 
  63. public int bulkUpdate(String hql, Object[] value) { 
  64. return getHibernateTemplate().bulkUpdate(hql, value); 
  65. // 根据HQL语句进行查询 
  66. @SuppressWarnings("unchecked"
  67. public List<T> find(String queryString) { 
  68. return getHibernateTemplate().find(queryString); 
  69. // 根据HQL语句进行查询 
  70. @SuppressWarnings("unchecked"
  71. public List<T> find(String queryString, Object obj) { 
  72. return getHibernateTemplate().find(queryString, obj); 
  73. // 根据HQL语句进行查询 
  74. @SuppressWarnings("unchecked"
  75. public List<T> find(String queryString, Object[] obj) { 
  76. return getHibernateTemplate().find(queryString, obj); 
  77. /** 
  78. * 使用命名查询进行查询 
  79. * @param queryString 
  80. *            HQL 
  81. * @param paramName 
  82. *            参数名 
  83. * @param value 
  84. *            参数值 
  85. * @return 
  86. */ 
  87. @SuppressWarnings("unchecked"
  88. public List<T> findByNamedParam(String queryString, String paramName, Object value) { 
  89. return this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); 
  90. /** 
  91. * 使用命名查询进行查询 多个参数 
  92. * @param queryString 
  93. *            HQL 
  94. * @param paramNames 
  95. *            参数名的数组 
  96. * @param values 
  97. *            参数值的数组 
  98. * @return 
  99. */ 
  100. @SuppressWarnings("unchecked"
  101. public List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values) { 
  102. return this.getHibernateTemplate().findByNamedParam(queryString, paramNames, values); 
  103. /** 
  104. * 使用HIBERNATE映射文件中的定义的HQL语句进行查询 
  105. * @param queryName 
  106. *            文件中定义的HQL语句的名字 
  107. * @return 
  108. */ 
  109. @SuppressWarnings("unchecked"
  110. public List<T> findByNamedQuery(String queryName) { 
  111. return getHibernateTemplate().findByNamedQuery(queryName); 
  112. /** 
  113. * @param queryName 
  114. * @param value 
  115. * @return 
  116. */ 
  117. @SuppressWarnings("unchecked"
  118. public List<T> findByNamedQuery(String queryName, Object value) { 
  119. return getHibernateTemplate().findByNamedQuery(queryName, value); 
  120. /** 
  121. * @param queryName 
  122. * @param values 
  123. * @return 
  124. */ 
  125. @SuppressWarnings("unchecked"
  126. public List<T> findByNamedQuery(String queryName, Object[] values) { 
  127. return getHibernateTemplate().findByNamedQuery(queryName, values); 
  128. /** 
  129. * 根据属性查询 
  130. * @param property 
  131. * @param value 
  132. * @return 
  133. */ 
  134. @SuppressWarnings("unchecked"
  135. public List<T> findByProperty(String property, Object value) { 
  136. return this.getHibernateTemplate().findByCriteria( 
  137. DetachedCriteria.forClass(type()).add(Restrictions.eq(property, value))); 
  138. /** 
  139. * 分页查询 
  140. * 注:不能满足要求子类重写该方法 
  141. * @param t 
  142. * @param firstResult 
  143. * @param maxResult 
  144. * @return 返回分页查询的数据 
  145. */ 
  146. @SuppressWarnings("unchecked"
  147. public List<T> findByPagination(final T t, final int firstResult, final int maxResult) { 
  148. return getHibernateTemplate().executeFind(new HibernateCallback() { 
  149. public Object doInHibernate(Session session) throws HibernateException, SQLException { 
  150. Criteria criteria = session.createCriteria(type()); 
  151. criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); 
  152. criteria.setFirstResult(firstResult); 
  153. criteria.setMaxResults(maxResult); 
  154. return criteria.list(); 
  155. }); 
  156. /** 
  157. * 分页统计查询 
  158. * @param t 
  159. * @return 一共有多少条数据 
  160. */ 
  161. @SuppressWarnings("unchecked"
  162. public int countByPagination(final T t) { 
  163. return (Integer) getHibernateTemplate().execute(new HibernateCallback() { 
  164. public Object doInHibernate(Session session) throws HibernateException, SQLException { 
  165. Criteria criteria = session.createCriteria(type()); 
  166. criteria.setProjection(Projections.rowCount()); 
  167. criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); 
  168. return criteria.uniqueResult(); 
  169. }); 
  170. }
  171. 反射类:
  172. public class ClassInfoDAO{ 
  173.     @SuppressWarnings("unchecked"
  174.     protected Class type() { 
  175.     return User.class
  176.    }