黑马程序员技术交流社区

标题: 分享一下,我写的代码可重用Dao实现类,利用范型 [打印本页]

作者: 付维翔    时间: 2012-10-25 15:04
标题: 分享一下,我写的代码可重用Dao实现类,利用范型
  1. /**
  2. * Dao操作的基本类,
  3. *
  4. * @author Keith
  5. *
  6. * @param <T>/所操作的对象
  7. */
  8. public abstract class BaseDaoImpl<T, ID extends Serializable> extends
  9. QueryDaoImpl {

  10. /**
  11. * 得到所要操作JavaBean对象的字节码,即Class对象,例如:return ApproveInfo.class;
  12. *
  13. * @return
  14. */
  15. abstract protected Class<T> getEntityClass();

  16. public BaseDaoImpl() {

  17. }

  18. protected T get(ID id) {
  19. return get(id, false);
  20. }

  21. /**
  22. * @see Session.get(Class,Serializable,LockMode)
  23. * @param id
  24. * 对象ID
  25. * @param lock
  26. * 是否锁定, 使用数据库的独占锁来实现悲观锁(<em>LockMode.UPGRADE</em>
  27. * )。生成如下sql语句:select ...for update
  28. * @return 持久化对象
  29. */
  30. @SuppressWarnings("unchecked")
  31. protected T get(ID id, boolean lock) {
  32. T entity;
  33. if (lock) {
  34. entity = (T) template.get(getEntityClass(), id, LockMode.UPGRADE);
  35. } else {
  36. entity = (T) template.get(getEntityClass(), id);
  37. }
  38. return entity;
  39. }

  40. @SuppressWarnings("unchecked")
  41. protected List<T> getAll() {
  42. return template.find("FROM " + getEntityClass().getName());
  43. }

  44. @SuppressWarnings("unchecked")
  45. public List<T> getByIds(Long... ids) {
  46. if (ids == null || ids.length == 0) {
  47. // 若所查询的的id集合为空,则返回一个空集合,防止空指针错误
  48. return Collections.EMPTY_LIST;
  49. }
  50. String list = null;
  51. StringBuilder idsList = new StringBuilder();
  52. // 构造SQL语句中使用的 id 集合1,2,3...形式
  53. for (Long a : ids) {
  54. idsList.append(a).append(",");
  55. }
  56. // 去除最构造idsList时多填 加的一个“,”
  57. if (idsList.length() != 0) {
  58. list = idsList.substring(0, idsList.lastIndexOf(","));
  59. }
  60. // 返回指定ids的数据对象集合
  61. return template.find("FROM " + getEntityClass().getName()
  62. + " o_cname WHERE o_cname.id IN (" + list + ")");
  63. }



  64. }
复制代码
如果有什么错误,欢迎大家给出意见,{:soso_e100:}

作者: 王龙    时间: 2012-10-25 15:32
学习了嘿嘿




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2