上一篇我们介绍《构建dubbo分布式平台-maven构建ant-framework核心代码annotation》,今天重点讲解的是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 { }
3. 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); } }
文章内容不写太多,希望大家能够掌握每一个知识点,基础的CRUD,BASE的封装差不多都在这里,后面会继续补充,具体的业务和实现后面会讲解到。
欢迎大家跟我一起学习《构建dubbo分布式平台》,希望大家持续关注后面的文章!
相关推荐
本示例项目“dubbo-demo-maven版”是基于Maven构建的,旨在帮助开发者快速理解并掌握Dubbo的核心功能与使用方式。在本文中,我们将深入探讨如何利用Maven构建Dubbo项目,以及Dubbo的主要特性和应用场景。 首先,...
本篇将详细讲解基于dubbo-demo-consumer、dubbo-demo-provider和dubbo-simple-monitor的实例服务,带你深入理解Dubbo的核心概念和操作流程。 首先,我们来看`dubbo-demo-consumer`,它是Dubbo服务的消费者。消费者...
《Dubbo监控工具详解——基于dubbo-monitor-simple-2.5.8》 在分布式系统开发中,监控是至关重要的一个环节,它可以帮助开发者实时了解服务的运行状态,及时发现并解决问题。Apache Dubbo,作为一款高性能、轻量级...
dubbo_demo-maven demo里还基于Spring Aop,运用dubbo的"隐式参数"+DMC 实现了日志追踪 demo里还添加了filter 的基本应用 demo里集成 Bean Validation
dubbo-admin-2.5.4提供支持JDK1.7及JDK1.8的War包 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看...
本文将深入探讨“jmeter-plugins-dubbo-2.7.1-jar-with-dependencies”这一系统压测工具包,它专门针对基于Java的Dubbo服务进行性能测试。了解并熟练掌握这一工具,能帮助我们更好地优化服务性能,提升系统的稳定性...
《Dubbo监控平台Dubbo-Monitor-Simple 2.5.3详解》 在分布式系统中,服务治理和监控是至关重要的环节,Dubbo作为一款高性能、轻量级的Java远程服务调用框架,提供了丰富的服务治理功能。本文将详细探讨Dubbo监控...
其中,`dubbo-admin`是Dubbo的核心组件之一,它提供了一个可视化的管理控制台,帮助开发者对服务进行管理和监控。本文将详细解析`dubbo-admin-2.5.4.war`这个版本的后台管理工具,探讨其主要特性和使用方法。 首先...
标题 "springboot2.0.x+dubbo-spring-boot-starter" 涉及的是将流行的微服务框架 Dubbo 集成到 Spring Boot 2.0.x 的项目实践中。这个集成使得开发者能够利用 Spring Boot 的便利性和 Dubbo 的高性能远程服务调用...
本文将深入探讨"jmeter-plugins-dubbo-2.7.1-jar-with-dependencies (1)"这个压缩包中的关键知识点。 1. **JMeter Plugins for Dubbo** JMeter Plugins for Dubbo 是一个扩展了JMeter功能的插件,专门用于测试基于...
综上所述,Apache Incubator Dubbo-OPS Master是Dubbo生态系统中的重要组成部分,它提供了强大的管理和监控能力,为开发者带来了极大的便利,也是构建高效、稳定的分布式系统不可或缺的工具。对于Java开发者,尤其是...
Dubbo分布式服务架构,对于研究大型Web服务器的并发技术的同学们有帮助。
本文将深入探讨“dubbo-monitor-simple-2.5.4-SNAPSHOT-assembly.tar.gz”这一压缩包中的内容,揭示Dubbo监控简易实现的核心功能与使用方法。 首先,我们关注的是“dubbo-monitor-simple”这个组件,它是Dubbo监控...
dubbo管理控制台 启动方式:java -jar dubbo-admin-server-0.4.0.jar
总的来说,`incubator-dubbo-ops-master.zip`是深入理解Dubbo Admin和分布式服务治理的重要资料,通过分析源码,我们可以更全面地掌握服务注册、发现、监控等核心概念,为构建稳定、高效的分布式系统打下坚实基础。
【标签】“dubbo monitor”进一步强调了本项目的核心在于dubbo的服务监控,意味着我们将深入探讨如何使用dubbo-monitor-web来监控dubbox服务的运行状态。 在【压缩包子文件的文件名称列表】中,我们只看到“dubbo-...
首先,让我们了解dubbo-monitor-simple的核心功能。这个监控中心主要实现了Dubbo的服务注册、服务发现、服务调用统计、服务性能监控等功能。通过它,我们可以查看服务提供者的健康状态、调用延迟、失败率等关键指标...
Dubbo是什么、特点、已经框架的演变、为什么使用Dubbo Maven是什么、特点、为什么要使用Maven Zookeeper是什么、特点,为什么要使用Zookeeper