`
天空晴朗
  • 浏览: 26988 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(九) 构建dubbo分布式平台-maven构建ant-framework核心代码Base封装

阅读更多

上一篇我们介绍《构建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分布式平台》,希望大家持续关注后面的文章!

 

 

5
0
分享到:
评论

相关推荐

    dubbo-demo-maven版

    本示例项目“dubbo-demo-maven版”是基于Maven构建的,旨在帮助开发者快速理解并掌握Dubbo的核心功能与使用方式。在本文中,我们将深入探讨如何利用Maven构建Dubbo项目,以及Dubbo的主要特性和应用场景。 首先,...

    dubbo-demo-consumer、dubbo-demo-provider、dubbo-simple-monitor

    本篇将详细讲解基于dubbo-demo-consumer、dubbo-demo-provider和dubbo-simple-monitor的实例服务,带你深入理解Dubbo的核心概念和操作流程。 首先,我们来看`dubbo-demo-consumer`,它是Dubbo服务的消费者。消费者...

    dubbo-monitor-simple-2.5.8-assembly.tar.gz

    《Dubbo监控工具详解——基于dubbo-monitor-simple-2.5.8》 在分布式系统开发中,监控是至关重要的一个环节,它可以帮助开发者实时了解服务的运行状态,及时发现并解决问题。Apache Dubbo,作为一款高性能、轻量级...

    dubbo_demo-maven

    dubbo_demo-maven demo里还基于Spring Aop,运用dubbo的"隐式参数"+DMC 实现了日志追踪 demo里还添加了filter 的基本应用 demo里集成 Bean Validation

    dubbo-admin-2.5.4.war

    dubbo-admin-2.5.4提供支持JDK1.7及JDK1.8的War包 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看...

    jmeter-plugins-dubbo-2.7.1-jar-with-dependencies

    本文将深入探讨“jmeter-plugins-dubbo-2.7.1-jar-with-dependencies”这一系统压测工具包,它专门针对基于Java的Dubbo服务进行性能测试。了解并熟练掌握这一工具,能帮助我们更好地优化服务性能,提升系统的稳定性...

    dubbo监控平台dubbo-monitor-simple-2.5.3

    《Dubbo监控平台Dubbo-Monitor-Simple 2.5.3详解》 在分布式系统中,服务治理和监控是至关重要的环节,Dubbo作为一款高性能、轻量级的Java远程服务调用框架,提供了丰富的服务治理功能。本文将详细探讨Dubbo监控...

    dubbo-admin-2.5.4.war后台管理

    其中,`dubbo-admin`是Dubbo的核心组件之一,它提供了一个可视化的管理控制台,帮助开发者对服务进行管理和监控。本文将详细解析`dubbo-admin-2.5.4.war`这个版本的后台管理工具,探讨其主要特性和使用方法。 首先...

    springboot2.0.x+dubbo-spring-boot-starter

    标题 "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)

    本文将深入探讨"jmeter-plugins-dubbo-2.7.1-jar-with-dependencies (1)"这个压缩包中的关键知识点。 1. **JMeter Plugins for Dubbo** JMeter Plugins for Dubbo 是一个扩展了JMeter功能的插件,专门用于测试基于...

    incubator-dubbo-ops-master.rar

    综上所述,Apache Incubator Dubbo-OPS Master是Dubbo生态系统中的重要组成部分,它提供了强大的管理和监控能力,为开发者带来了极大的便利,也是构建高效、稳定的分布式系统不可或缺的工具。对于Java开发者,尤其是...

    Dubbo 分布式服务架构

    Dubbo分布式服务架构,对于研究大型Web服务器的并发技术的同学们有帮助。

    dubbo-monitor-simple-2.5.4-SNAPSHOT-assembly.tar.gz

    本文将深入探讨“dubbo-monitor-simple-2.5.4-SNAPSHOT-assembly.tar.gz”这一压缩包中的内容,揭示Dubbo监控简易实现的核心功能与使用方法。 首先,我们关注的是“dubbo-monitor-simple”这个组件,它是Dubbo监控...

    dubbo-admin-0.4.0 dubbo服务治理平台 jar包

    dubbo管理控制台 启动方式:java -jar dubbo-admin-server-0.4.0.jar

    incubator-dubbo-ops-master.zip

    总的来说,`incubator-dubbo-ops-master.zip`是深入理解Dubbo Admin和分布式服务治理的重要资料,通过分析源码,我们可以更全面地掌握服务注册、发现、监控等核心概念,为构建稳定、高效的分布式系统打下坚实基础。

    一.dubbox(dangdang V2.8.4)+springBoot(1.4.2.RELEASE)+dubbo-monitor-web 监控项目源码

    【标签】“dubbo monitor”进一步强调了本项目的核心在于dubbo的服务监控,意味着我们将深入探讨如何使用dubbo-monitor-web来监控dubbox服务的运行状态。 在【压缩包子文件的文件名称列表】中,我们只看到“dubbo-...

    dubbo-monitor-simple-2.8.4

    首先,让我们了解dubbo-monitor-simple的核心功能。这个监控中心主要实现了Dubbo的服务注册、服务发现、服务调用统计、服务性能监控等功能。通过它,我们可以查看服务提供者的健康状态、调用延迟、失败率等关键指标...

    Dubbo-Zookeeper-Maven-详细讲解.pptx

    Dubbo是什么、特点、已经框架的演变、为什么使用Dubbo Maven是什么、特点、为什么要使用Maven Zookeeper是什么、特点,为什么要使用Zookeeper

Global site tag (gtag.js) - Google Analytics