java 泛型 basedao_基于泛型的BaseDao,BaseService实现增强版

第 1 步:编写接口 BaseDaopublic interface BaseDao>

{

boolean save(T u);

boolean deleteById(ID id);

boolean update(T u);

T getById(ID id);

List getAll();

}

第 2 步:编写基本实现类 BaseDaoImpl@SuppressWarnings("all")

public abstract class BaseDaoImpl>

implements BaseDao

{

@Resource(name = "sqlSessionFactory")

protected SqlSessionFactory sqlSessionFactory;

/** 当前接口类型 */

private Class curDao;

public BaseDaoImpl()

{

ParameterizedType pt = (ParameterizedType)getClass().getGenericSuperclass();

this.curDao = ((Class)pt.getActualTypeArguments()[2]);

}

@Override

public boolean save(T u)

{

return getMapper().save(u);

}

@Override

public boolean deleteById(ID id)

{

return getMapper().deleteById(id);

}

@Override

public boolean update(T u)

{

return getMapper().update(u);

}

@Override

public T getById(ID id)

{

return getMapper().getById(id);

}

@Override

public List getAll()

{

return getMapper().getAll();

}

protected SqlSession getSession()

{

return sqlSessionFactory.openSession();

}

protected I getMapper()

{

return getSession().getMapper(curDao);

}

}

注:AbstractEntity为通用实体抽象父类,可用于定义通用的字段,例如public abstract class AbstractEntity implements Serializable

{

private static final long serialVersionUID = 66532814011080848L;

private Long id;

//创建时间

private Date createDate;

//修改时间

private Date modifyDate;

public Long getId()

{

return id;

}

public void setId(Long id)

{

this.id = id;

}

public Date getCreateDate()

{

return createDate;

}

public void setCreateDate(Date createDate)

{

this.createDate = createDate;

}

public Date getModifyDate()

{

return modifyDate;

}

public void setModifyDate(Date modifyDate)

{

this.modifyDate = modifyDate;

}

}

第 3 步:编写 BaseServicepublic interface BaseService>

{

boolean save(T u);

boolean deleteById(ID id);

boolean update(T u);

T getById(ID id);

List getAll();

}

第 4 步:编写 BaseServiceImpl@Transactional

public abstract class BaseServiceImpl>

implements BaseService

{

/** 基础DAO */

private BaseDao baseDao;

@Override

public boolean save(T u)

{

if (u != null && u.getCreateDate() == null)

{

u.setCreateDate(new Date());

}

if (u != null && u.getModifyDate() == null)

{

u.setModifyDate(new Date());

}

return baseDao.save(u);

}

@Override

public boolean deleteById(ID id)

{

return baseDao.deleteById(id);

}

@Override

public boolean update(T u)

{

if (u != null && u.getModifyDate() != null)

{

u.setModifyDate(new Date());

}

return baseDao.update(u);

}

@Override

public T getById(ID id)

{

return baseDao.getById(id);

}

@Override

public List getAll()

{

return baseDao.getAll();

}

public void setBaseDao(BaseDao baseDao)

{

this.baseDao = baseDao;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值