A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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:}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
学习了嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马