(九)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - maven构建ant-framework核心代码Base封装

今天重点讲解的是ant-framework核心代码Base封装过程。

因为涉及到springmvc、mybatis的集成,为了使项目编码更简洁易用,这边将基础的BASE进行封装,其中包括:BaseBean、BaseDao、BaseService、CRUD的基础封装、分页组件的封装、mybatis的mapper的基础封装,各种数据源支持的封装等。

  1. 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());

``}

}

2. BaseDao的基础封装(这个很简单,因为使用的是mybatis集成方案,只需要保留接口即可),代码如下:

public interface BaseDao {

}

  1. 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);

}

  1. 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);

``}

}

5.架构代码如下:

相关推荐
2501_941148156 小时前
从边缘节点到云端协同的分布式缓存一致性实现原理实践解析与多语言代码示例分享笔记集录稿
笔记·分布式·物联网·缓存
星光一影7 小时前
教育培训机构消课管理系统智慧校园艺术舞蹈美术艺术培训班扣课时教务管理系统
java·spring boot·mysql·vue·mybatis·uniapp
回家路上绕了弯8 小时前
分布式事务SAGA模式详解:长事务与复杂流程的柔性事务方案
分布式·后端
Gofarlic_oms110 小时前
集中式 vs 分布式许可:跨地域企业的管控架构选择
大数据·运维·人工智能·分布式·架构·数据挖掘·需求分析
神秘面具男0311 小时前
ceph分布式存储
分布式·ceph
北亚数据恢复11 小时前
VSAN分布式存储下非正常关机导致的虚拟机磁盘丢失如何恢复数据?
分布式·数据恢复·服务器数据恢复·北亚数据恢复·vsan数据恢复
cike_y12 小时前
Mybatis之作用域(Scope)和生命周期-解决属性名和字段名不一致的问题&ResultMap结果集映射
java·开发语言·数据库·tomcat·mybatis
阎*水12 小时前
Ceph 分布式存储完整实践指南
linux·运维·分布式·ceph
yours_Gabriel12 小时前
【kafka】基本概念
分布式·中间件·kafka
柒.梧.14 小时前
MyBatis一对一关联查询深度解析:大实体类、SQL99联表、分布式查询实践
分布式·mybatis