(九)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - maven构建ant-framework核心代码Base封装

今天重点讲解的是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); 

    

5.架构代码如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/487312.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】_tomcat的安装与使用

目录 1. Tomcat简介 2. Tomcat安装 2.1 下载Tomcat并解压缩 2.2 启动Tomcat 2.2.1 Tomcat乱码问题 2.2.2 Tomcat闪退问题 2.3 访问Tomcat欢迎页面 3. 使用Tomcat部署前端代码 3.1 路径匹配 3.2 文件路径访问与网络访问 4. 静态页面与动态页面 5. 基于tomcat的网站后…

单片机04__基本定时器__毫秒微秒延时

基本定时器__毫秒微秒延时 基本定时器介绍&#xff08;STM32F40x&#xff09; STM32F40X芯片一共包含14个定时器&#xff0c;这14个定时器分为3大类&#xff1a; 通用定时器 10个 TIM9-TIM1和TIM2-TIM5 具有基本定时器功能&#xff0c; 还具有输入捕获&#xff0c;输出比较功…

Linux---权限管理(ACL权限、特殊位和隐藏属性)

目录 1.ACT权限 1.1什么是ACT权限 1.2ACT图解 2.操作步骤 2.1添加测试目录、用户、组&#xff0c;并将用户添加到组 2.2修改目录的所有者和所属组 2.3设定权限 2.4为临时用户分配权限 2.4.1添加临时用户 2.4.2为临时用户分配特定权限 2.4.3查看目录权限&#xff0c;注…

【LeetCode-337】打家劫舍III(动态规划)

目录 题目描述 解法1&#xff1a;动态规划 代码实现 题目链接 题目描述 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个“父“…

解决IDEA中Maven下载依赖包过慢或报错的问题

由于公司项目迭代&#xff0c;越来越多的项目开始转型新版本&#xff0c;由于我对Java一直不感冒&#xff0c;但要顺应公司项目要求&#xff0c;遂自己要逐步开始完善Java相关的知识层面&#xff0c;此篇是我在学习SpringBoot时对一些不懂地方及遇到问题时的记录。 学习视频链…

SpringMVC 学习(一)之 SpringMVC 介绍

目录 1 MVC 介绍 2 SpringMVC 介绍 2.1 SpringMVC 特点 2.2 SpringMVC 的核心组件 2.3 SpringMVC 执行流程 3 参考文档 1 MVC 介绍 MVC (Model View Controller) 是一种设计思想&#xff0c;它将应用程序分为三大组件&#xff1a;模型 (Model)、视图 (View)、控制器 (Con…

Docker Container(容器)

"在哪里走散&#xff0c;你都会找到我~" Docker 容器 什么是容器&#xff1f; 通俗来讲&#xff0c;容器是镜像运行的实体。我们对于镜像的认知是&#xff0c;“存储在磁盘上的只读文件”。当我们启动一个容器的本质&#xff0c;就是启动一个进程&#xff0c;即容器…

开源软件:塑造软件行业未来的协作与创新之力

随着信息技术的迅猛发展&#xff0c;开源软件已经逐渐成为软件开发的潮流&#xff0c;以其独特的低成本、可协作性和透明度等特性&#xff0c;在全球范围内引起了广泛的关注和应用。越来越多的企业和个人选择使用开源软件&#xff0c;这不仅推动了软件行业的繁荣&#xff0c;还…

iOS调用系统已安装地图及内置地图实现

info.plist要添加scheme: 1.地图列表: NSArray *mapKeys=[[NSArray alloc] initWithObjects:@"com.autonavi.minimap",@"com.baidu.BaiduMap",@"com.google.android.apps.maps",@"com.tencent.map", nil]; NSArray *mapSchemes=[[NS…

每日五道java面试题之spring篇(四)

目录&#xff1a; 第一题 Spring框架的设计目标&#xff0c;设计理念&#xff0c;和核心是什么&#xff1f;第二题. Spring由哪些模块组成&#xff1f;第三题. 详细讲解一下核心容器&#xff08;spring context应用上下文) 模块第四题.Spring框架中有哪些不同类型的事件第五题.…

Mamba详细介绍和RNN、Transformer的架构可视化对比

Transformer体系结构已经成为大型语言模型(llm)成功的主要组成部分。为了进一步改进llm&#xff0c;人们正在研发可能优于Transformer体系结构的新体系结构。其中一种方法是Mamba&#xff08;一种状态空间模型&#xff09;。 Mamba: Linear-Time Sequence Modeling with Select…

华为HCIP Datacom H12-831 卷23

单选题 1、某园区部署IS-IS实现网络互通&#xff0c;在所有IS-IS路由器的进程中配置命令flash-flood 6 max-timer-interval 100 Leve1-2&#xff0c;则以下关于该场景的描述,正确的是哪—项? A、若某IS-IS路由器LSDB内更新的LSP数量为5,则在100毫秒内且路由计算完成前&#…