用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

park    -  云代码空间

——

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

2017-12-11|770阅||

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

上一篇我们介绍《构建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
分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨
更多详细源码参考来源

顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: park
    • 等级: 初级设计师
    • 积分: 2125
    • 代码: 1 个
    • 文章: 72 篇
    • 随想: 0 条
    • 访问: 8 次
    • 关注

    标签

    MVC(8)api(1)教程(8)Spring(3)cache(1)Springmvc+(1)JEESZ(1)分布式缓存Redis(1)+mybatis(8)+shiro+(4)Activiti(4)+(6)dubbo(1)java企业架构(1)mvc配置(2)JEESZ分布式框架(1)JEESZ分布式框架(1)详细介绍(1)精华【分布式、微服务(1)RestFul服务介(1)Centos下单节点(1)JEESZ-Redi(1)springmvc整(1)JEESZ-kafk(1)Zookeeper集(1)JEESZ分布式架构(1)SSO解决方案(1)(一)构建dubbo(1)(二)构建dubbo(1)(三)构建dubbo(1)(四)构建dubbo(1)(五)构建dubbo(1)FastDFS分布式(1)FastDFS安装、(1)J2EE分布式框架-(1)Springmvc+(1)j2ee分布式架构核(2)dbcp数据源+jd(1)SSM框架——详细整(1)DUBBO与ZOOK(1)(六)(1)构建dubbo分布式(1)(七)(1)构建dubbo分布式(1)(八)(1)构建dubbo分布式(1)(九)(1)构建dubbo分布式(1)(十)(1)构建dubbo分布式(1)(十一)(1)构建dubbo分布式(1)(十二)(1)构建dubbo分布式(1)定义一个http(1)restful服务返(1)(十三)(1)构建dubbo分布式(1)springmvc+(1)分布式架构sprin(1)分布式服务:spri(1)Dubbo+Zook(1)springmvc+(1)一句话讲清楚什么是J(1)【分享】微服务分布式(1)Springmvc+(1)Kafka入门经典教(1)【推荐】微服务大型分(1)Springmvc+(1)手把手Maven搭建(1)分布式服务:spri(1)Dubbo+Zook(1)分布式架构sprin(1)(十四)(1)构建dubbo分布式(1)(十五)(1)构建dubbo分布式(1)Springmvc+(1)j2ee分布式架构核(1)dbcp数据源+jd(1)(十六)(1)构建dubbo分布式(1)(十七)(1)构建dubbo分布式(1)构建springmv(1)构建springmv(1)构建springmv(1)【企业级框架整合】S(1)springmvc整(1)DUBBO与ZOOK(1)【分享】微服务分布式(1)Springmvc+(1)JEESZ分布式框架(1)分布式架构sprin(1)分布式服务:spri(1)Dubbo+Zook(1)分布式架构sprin(1)SpringBoot(8)企业级(8)(十)用spring(1)(六)springb(1)(七)springb(1)(八)springb(1)(九)springb(1)Restdocs创建(1)(十一)spring(1)(十二)spring(1)(十三)spring(1)

    最新提问

      站长推荐