`
天空晴朗
  • 浏览: 25681 次
  • 性别: 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版

    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开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看...

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

    dubbo-demo-consumer、dubbo-demo-provider、dubbo-simple-monitor实例服务

    jmeter-plugins-dubbo-2.7.8-jar-with-dependencies.jar

    jmeter的dubbo插件,jmeter-plugins-dubbo-2.7.8-jar-with-dependencies.jar,适用于JMeter5.4.1版本,将解压后的文件jmeter-plugins-dubbo-2.7.8-jar-with-dependencies放在Jmeter安装目录下的\lib\ext文件夹中,...

    dubbo-admin-0.0.1-SNAPSHOT.jar

    这是Dubbo分布式框架的一个管理监控中心,可以实时监控分布式项目的资源情况

    dubbo-dubbo-2.7.3.rar

    dubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo...

    dubbo-admin-2.5.4.war后台管理

    dubbo-admin-2.5.4.war管理控制台,进过测试,可以用,有需要的朋友请下载

    dubbo-monitor-simple-2.6.1.tgz

    dubbo官方自带了dubbo-admin及dubbo-simple/dubbo-monitor-simple二个子项目用于服务治理及服务监控。 dubbo-monitor-simple是Alibaba的开源项目,用于监控在dubbo框架下接口暴露,注册情况,也可以看接口的调用...

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

    jmeter-plugins-dubbo-2.7.1-jar-with-dependencies 系统压测工具包

    Dubbo 分布式服务架构

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

    dobbo源码dubbo-dubbo-2.7.3.rar

    dobbo源码dubbo-dubbo-2.7.3.rardobbo源码dubbo-dubbo-2.7.3.rardobbo源码dubbo-dubbo-2.7.3.rardobbo源码dubbo-dubbo-2.7.3.rardobbo源码dubbo-dubbo-2.7.3.rardobbo源码dubbo-dubbo-2.7.3.rardobbo源码dubbo-dubbo...

    dubbo-admin-2.8.4.war

    dubbo 最新dubbo-admin-2.8.4.war 菜单报错已修改。

    dubbo监控中心dubbo-monitor-simple

    该包为dubbo-monitor,使用方法请参见博文 《Dubbo进阶(五)—— dubbo-monitor-simple使用》 https://blog.csdn.net/sunhuaqiang1/article/details/80141478

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

    dubbo-monitor-simple-2.5.8-assembly-DUBBO监控工具,

    incubator-dubbo-ops-master.rar

    incubator-dubbo-ops-master.rar dubbo-admin 控制台 与 dubbo-monitor-simple 可视化监控

    可用的dubbo-admin-2.5.3.war工具

    可用的dubbo-admin-2.5.3.war工具,亲测可用。dubbo-admin-2.5.3.war,源码编辑的war包,注意是jdk1.8以下。本地环境默认安装zookeeper后可放到tomcat下直接运行。

Global site tag (gtag.js) - Google Analytics