今天重点讲解的是 ant-framework 核心代码 Base 封装过程
因为涉及到 springmvcmybatis 的集成, 为了使项目编码更简洁易用, 这边将基础的 BASE 进行封装, 其中包括: BaseBeanBaseDaoBaseServiceCRUD 的基础封装分页组件的封装 mybatis 的 mapper 的基础封装, 各种数据源支持的封装等
BaseEntity 基础封装, 代码如下:
- /**
- * Entity 基础封装
- */
- public abstract class BaseEntity < T > implements Serializable {
- private static final long serialVersionUID = 1234567890987654321L;
- /**
- * 实体编号 (唯一标识)
- */
- protected String id;
- /**
- * 当前实体分页对象
- */
- protected Page < T > page;
- /**
- * 是否插入新纪录
- */
- protected boolean isNewRecord = false;
- public BaseEntity() {}
- public BaseEntity(String id) {
- this();
- this.id = id;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- /**
- * 数据插入之前
- */
- public abstract void preInsert();
- /**
- * 更新数据之前
- */
- public abstract void preUpdate();
- /**
- * 是否是新记录 (默认: false)
- */
- public boolean getIsNewRecord() {
- return isNewRecord || StringUtils.isBlank(getId());
- }
- /**
- * 是否是新记录 (默认: false)
- */
- public void setIsNewRecord(boolean isNewRecord) {
- this.isNewRecord = isNewRecord;
- }
- /**
- * 全局变量对象
- */
- @JsonIgnore public Global getGlobal() {
- return Global.getInstance();
- }@Override public boolean equals(Object obj) {
- if (null == obj) {
- return false;
- }
- if (this == obj) {
- return true;
- }
- if (!getClass().equals(obj.getClass())) {
- return false;
- }
- BaseEntity < ?>that = (BaseEntity < ?>) obj;
- return null == this.getId() ? false: this.getId().equals(that.getId());
- }
- }
BaseDao 的基础封装 (这个很简单, 因为使用的是 mybatis 集成方案, 只需要保留接口即可), 代码如下:
- public interface BaseDao { < br / >
- }
CrudDao 的基础封装
- /**
- * DAO 基础封装
- */
- public interface CrudDao < T > extends BaseDao {
- /**
- * 获取单条数据
- * @param id
- * @return
- */
- public T get(String id);
- /**
- * 获取单条数据
- * @param entity
- * @return
- */
- public T get(T entity);
- /**
- * 查询数据列表, 如果需要分页, 请设置分页对象, 如: entity.setPage(new Page<T>());
- * @param entity
- * @return
- */
- public List < T > findList(T entity);
- /**
- * 查询所有数据列表
- * @param entity
- * @return
- */
- public List < T > findAllList(T entity);
- /**
- * 查询所有数据列表
- * @see public List<T> findAllList(T entity)
- * @return
- */
- @Deprecated public List < T > findAllList();
- /**
- * 插入数据
- * @param entity
- * @return
- */
- public int insert(T entity);
- /**
- * 更新数据
- * @param entity
- * @return
- */
- public int update(T entity);
- /**
- * 删除数据
- * @param id
- * @see public int delete(T entity)
- * @return
- */
- @Deprecated public int delete(String id);
- /**
- * 删除数据
- * @param entity
- * @return
- */
- public int delete(T entity);
- }
4.BaseService 的基础封装 (里面封装了基础的 CRUD 操作, 包括基础 get,find,insert,update 等)
- /**
- BaseService 基础封装
- */
- @Transactional(readOnly = true) public abstract class CrudService < D extends CrudDao < T > ,
- T extends DataEntity < T >> extends BaseService {
- /**
- 持久层 dao
- */
- @Autowired protected D dao;
- /**
- 获取单条数据
- @param id
- @return
- */
- public T get(String id) {
- return dao.get(id);
- }
- /**
- 获取单条数据
- @param entity
- @return
- */
- public T get(T entity) {
- return dao.get(entity);
- }
- /**
- 查询列表数据
- @param entity
- @return
- */
- public List < T > findList(T entity) {
- return dao.findList(entity);
- }
- /**
- 查询分页数据
- @param page 分页对象
- @param entity
- @return
- */
- public Page < T > findPage(Page < T > page, T entity) {
- entity.setPage(page);
- page.setList(dao.findList(entity));
- return page;
- }
- /**
- 保存数据 (插入或更新)
- @param entity
- */
- @Transactional(readOnly = false) public void save(T entity) {
- if (entity.getIsNewRecord()) {
- entity.preInsert();
- dao.insert(entity);
- } else {
- entity.preUpdate();
- dao.update(entity);
- }
- }
- /**
- 删除数据
- @param entity
- */
- @Transactional(readOnly = false) public void delete(T entity) {
- dao.delete(entity);
- }
- }
来源: http://www.bubuko.com/infodetail-2496100.html