- /**
- * Dao操作的基本类,
- *
- * @author Keith
- *
- * @param <T>/所操作的对象
- */
- public abstract class BaseDaoImpl<T, ID extends Serializable> extends
- QueryDaoImpl {
- /**
- * 得到所要操作JavaBean对象的字节码,即Class对象,例如:return ApproveInfo.class;
- *
- * @return
- */
- abstract protected Class<T> getEntityClass();
- public BaseDaoImpl() {
- }
- protected T get(ID id) {
- return get(id, false);
- }
- /**
- * @see Session.get(Class,Serializable,LockMode)
- * @param id
- * 对象ID
- * @param lock
- * 是否锁定, 使用数据库的独占锁来实现悲观锁(<em>LockMode.UPGRADE</em>
- * )。生成如下sql语句:select ...for update
- * @return 持久化对象
- */
- @SuppressWarnings("unchecked")
- protected T get(ID id, boolean lock) {
- T entity;
- if (lock) {
- entity = (T) template.get(getEntityClass(), id, LockMode.UPGRADE);
- } else {
- entity = (T) template.get(getEntityClass(), id);
- }
- return entity;
- }
- @SuppressWarnings("unchecked")
- protected List<T> getAll() {
- return template.find("FROM " + getEntityClass().getName());
- }
- @SuppressWarnings("unchecked")
- public List<T> getByIds(Long... ids) {
- if (ids == null || ids.length == 0) {
- // 若所查询的的id集合为空,则返回一个空集合,防止空指针错误
- return Collections.EMPTY_LIST;
- }
- String list = null;
- StringBuilder idsList = new StringBuilder();
- // 构造SQL语句中使用的 id 集合1,2,3...形式
- for (Long a : ids) {
- idsList.append(a).append(",");
- }
- // 去除最构造idsList时多填 加的一个“,”
- if (idsList.length() != 0) {
- list = idsList.substring(0, idsList.lastIndexOf(","));
- }
- // 返回指定ids的数据对象集合
- return template.find("FROM " + getEntityClass().getName()
- + " o_cname WHERE o_cname.id IN (" + list + ")");
- }
- }
复制代码 如果有什么错误,欢迎大家给出意见,{:soso_e100:}
|