码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-12-11 14:20:08      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:ice   data   sed   glob   etl   平台   tcl   springmvc   body   

上一篇我们介绍《构建dubbo分布式平台-maven构建ant-framework核心代码annotation》,今天重点讲解的是ant-framework核心代码Base封装过程。

 

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

 

1. BaseEntity基础封装,代码如下:

Java代码  技术分享图片
  1. /** 
  2.  * Entity基础封装 
  3.  */  
  4. public abstract class BaseEntity<T> implements Serializable {  
  5.   
  6.     private static final long serialVersionUID = 1234567890987654321L;  
  7.   
  8.     /** 
  9.      * 实体编号(唯一标识) 
  10.      */  
  11.     protected String id;  
  12.       
  13.     /** 
  14.      * 当前实体分页对象 
  15.      */  
  16.     protected Page<T> page;  
  17.       
  18.   
  19.     /** 
  20.      * 是否插入新纪录 
  21.      */  
  22.     protected boolean isNewRecord = false;  
  23.   
  24.     public BaseEntity() {  
  25.           
  26.     }  
  27.       
  28.     public BaseEntity(String id) {  
  29.         this();  
  30.         this.id = id;  
  31.     }  
  32.   
  33.     public String getId() {  
  34.         return id;  
  35.     }  
  36.   
  37.     public void setId(String id) {  
  38.         this.id = id;  
  39.     }  
  40.   
  41.     /** 
  42.      * 数据插入之前 
  43.      */  
  44.     public abstract void preInsert();  
  45.       
  46.     /** 
  47.      * 更新数据之前 
  48.      */  
  49.     public abstract void preUpdate();  
  50.       
  51.        /** 
  52.      * 是否是新记录(默认:false) 
  53.         */  
  54.     public boolean getIsNewRecord() {  
  55.         return isNewRecord || StringUtils.isBlank(getId());  
  56.     }  
  57.   
  58.     /** 
  59.      * 是否是新记录(默认:false) 
  60.      */  
  61.     public void setIsNewRecord(boolean isNewRecord) {  
  62.         this.isNewRecord = isNewRecord;  
  63.     }  
  64.   
  65.     /** 
  66.      * 全局变量对象 
  67.      */  
  68.     @JsonIgnore  
  69.     public Global getGlobal() {  
  70.         return Global.getInstance();  
  71.     }  
  72.       
  73.     @Override  
  74.     public boolean equals(Object obj) {  
  75.         if (null == obj) {  
  76.             return false;  
  77.         }  
  78.         if (this == obj) {  
  79.             return true;  
  80.         }  
  81.         if (!getClass().equals(obj.getClass())) {  
  82.             return false;  
  83.         }  
  84.         BaseEntity<?> that = (BaseEntity<?>) obj;  
  85.         return null == this.getId() ? false : this.getId().equals(that.getId());  
  86.     }     
  87. }  

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

Java代码  技术分享图片
  1. public interface BaseDao {  
  2. }  

 

3. CrudDao的基础封装

Java代码  技术分享图片
  1. /** 
  2.  * DAO基础封装 
  3.  */  
  4. public interface CrudDao<T> extends BaseDao {  
  5.   
  6.     /** 
  7.      * 获取单条数据 
  8.      * @param id 
  9.      * @return 
  10.      */  
  11.     public T get(String id);  
  12.       
  13.     /** 
  14.      * 获取单条数据 
  15.      * @param entity 
  16.      * @return 
  17.      */  
  18.     public T get(T entity);  
  19.       
  20.     /** 
  21.      * 查询数据列表,如果需要分页,请设置分页对象,如:entity.setPage(new Page<T>()); 
  22.      * @param entity 
  23.      * @return 
  24.      */  
  25.     public List<T> findList(T entity);  
  26.       
  27.     /** 
  28.      * 查询所有数据列表 
  29.      * @param entity 
  30.      * @return 
  31.      */  
  32.     public List<T> findAllList(T entity);  
  33.       
  34.     /** 
  35.      * 查询所有数据列表 
  36.      * @see public List<T> findAllList(T entity) 
  37.      * @return 
  38.      */  
  39.     @Deprecated  
  40.     public List<T> findAllList();  
  41.       
  42.     /** 
  43.      * 插入数据 
  44.      * @param entity 
  45.      * @return 
  46.      */  
  47.     public int insert(T entity);  
  48.       
  49.     /** 
  50.      * 更新数据 
  51.      * @param entity 
  52.      * @return 
  53.      */  
  54.     public int update(T entity);  
  55.       
  56.     /** 
  57.      * 删除数据 
  58.      * @param id 
  59.      * @see public int delete(T entity) 
  60.      * @return 
  61.      */  
  62.     @Deprecated  
  63.     public int delete(String id);  
  64.       
  65.     /** 
  66.      * 删除数据 
  67.      * @param entity 
  68.      * @return 
  69.      */  
  70.     public int delete(T entity);  
  71.       
  72. }  

 4. BaseService的基础封装(里面封装了基础的CRUD操作,包括基础get,find,insert,update等)

Java代码  技术分享图片
  1. /** 
  2.  * BaseService基础封装 
  3.  */  
  4. @Transactional(readOnly = true)  
  5. public abstract class CrudService<D extends CrudDao<T>, T extends DataEntity<T>> extends BaseService {  
  6.       
  7.     /** 
  8.      * 持久层dao 
  9.      */  
  10.     @Autowired  
  11.     protected D dao;  
  12.       
  13.     /** 
  14.      * 获取单条数据 
  15.      * @param id 
  16.      * @return 
  17.      */  
  18.     public T get(String id) {  
  19.         return dao.get(id);  
  20.     }  
  21.       
  22.     /** 
  23.      * 获取单条数据 
  24.      * @param entity 
  25.      * @return 
  26.      */  
  27.     public T get(T entity) {  
  28.         return dao.get(entity);  
  29.     }  
  30.       
  31.     /** 
  32.      * 查询列表数据 
  33.      * @param entity 
  34.      * @return 
  35.      */  
  36.     public List<T> findList(T entity) {  
  37.         return dao.findList(entity);  
  38.     }  
  39.       
  40.     /** 
  41.      * 查询分页数据 
  42.      * @param page 分页对象 
  43.      * @param entity 
  44.      * @return 
  45.      */  
  46.     public Page<T> findPage(Page<T> page, T entity) {  
  47.         entity.setPage(page);  
  48.         page.setList(dao.findList(entity));  
  49.         return page;  
  50.     }  
  51.   
  52.     /** 
  53.      * 保存数据(插入或更新) 
  54.      * @param entity 
  55.      */  
  56.     @Transactional(readOnly = false)  
  57.     public void save(T entity) {  
  58.         if (entity.getIsNewRecord()){  
  59.             entity.preInsert();  
  60.             dao.insert(entity);  
  61.         }else{  
  62.             entity.preUpdate();  
  63.             dao.update(entity);  
  64.         }  
  65.     }  
  66.       
  67.     /** 
  68.      * 删除数据 
  69.      * @param entity 
  70.      */  
  71.     @Transactional(readOnly = false)  
  72.     public void delete(T entity) {  
  73.         dao.delete(entity);  
  74.     }  
  75. }  

 

文章内容不写太多,希望大家能够掌握每一个知识点,基础的CRUD,BASE的封装差不多都在这里,后面会继续补充,具体的业务和实现后面会讲解到。

欢迎大家跟我一起学习《构建dubbo分布式平台》,希望大家持续关注后面的文章!

愿意了解框架技术或者源码的朋友直接求求交流分享技术:2042849237
分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨
更多详细源码参考来源:http://minglisoft.cn/technology

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

标签:ice   data   sed   glob   etl   平台   tcl   springmvc   body   

原文地址:http://www.cnblogs.com/datouwawa/p/8021955.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!