(九)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.架构代码如下:

相关推荐
yxy___3 小时前
达梦分布式集群DPC_分区表重建与性能优化操作指南_yxy
分布式·性能优化·分区表
走遍西兰花.jpg3 小时前
spark的shuffle原理及调优
大数据·分布式·spark
小邓睡不饱耶3 小时前
Spark 3.5.1 全栈实战指南:从环境部署到生产优化
大数据·分布式·spark
姚不倒4 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
前端技术5 小时前
【鸿蒙实战】从零打造智能物联网家居控制系统:HarmonyOS Next分布式能力的完美诠释
java·前端·人工智能·分布式·物联网·前端框架·harmonyos
05大叔5 小时前
Mybatis-Plus
java·开发语言·mybatis
aini_lovee5 小时前
33节点配电网分布式发电(DG)最优分布MATLAB实现
分布式·matlab·wpf
不爱编程的小陈5 小时前
自研基于Raft的高性能分布式KV存储系统(一)
分布式
Predestination王瀞潞5 小时前
缓存机制:一二级缓存
spring·缓存·mybatis
珠海西格5 小时前
聚焦痛点|分布式光伏消纳困境的三大表现及红区治理难点
服务器·网络·分布式·安全·区块链