SpringBoot
由Pivotal团队于2013年开始研发,2014年4月正式发布的全新开源轻量级框架。
一、设计目的与特点
-
设计目的:Spring Boot旨在简化新Spring应用的初始搭建以及开发过程,使Spring应用程序的开发更加简单、快速和可维护。
-
特点:
- 自动配置:Spring Boot利用“约定优于配置”的原则,能够根据项目中添加的依赖、配置文件和类路径下的类自动配置Spring应用程序,极大地简化开发者的配置工作。
- 起步依赖:提供了一套起步依赖(Starter Dependencies),这些依赖是预先配置好的依赖项集合,可以满足特定的应用场景,从而简化项目的依赖管理。
- 内嵌式容器:支持内嵌Servlet容器(如Tomcat、Jetty)和Reactive容器(如Netty),使得应用程序可以以独立的方式运行,无需额外安装和配置外部容器。
- 多环境支持:提供对多环境的支持,可以根据不同的环境(如开发、测试、生产)来配置应用程序。
- 丰富的生态系统:拥有庞大的社区和丰富的插件,为开发者提供了丰富的资源和支持。
二、核心策略
- 开箱即用(Out of Box):通过在Maven项目的pom文件中添加相关依赖包,并使用对应注解来代替繁琐的XML配置文件,从而管理对象的生命周期。这一特点使得开发人员能够摆脱复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。
- 约定优于配置(Convention over Configuration):一种由Spring Boot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。虽然这一特点降低了部分灵活性,并增加了BUG定位的复杂性,但它减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
三、功能与应用场景
-
功能:
- 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs。
- 提供自动配置的“starter”项目对象模型(POMs)以简化Maven配置。
- 尽可能自动配置Spring容器。
- 提供准备好的特性,如指标、健康检查和外部化配置。
- 没有代码生成,不需要XML配置。
-
应用场景:
- 微服务架构:Spring Boot能够快速搭建和部署独立的微服务,同时支持各种云平台。
- Web应用程序开发:提供了丰富的Web开发特性,包括RESTful API、WebSocket、模板引擎等,适合快速开发各种类型的Web应用。
- 数据访问:集成了Spring Data JPA、Spring Data MongoDB等数据访问模块,方便进行数据库操作和访问。
- 缓存管理:支持多种缓存管理工具,如Ehcache、Redis等,可用于提高应用程序的性能和可伸缩性。
- 消息队列:集成了消息队列工具,如RabbitMQ、Kafka等,可用于实现异步消息处理和事件驱动开发。
- 定时任务:提供了定时任务调度的功能,可用于实现各种定时任务、批处理任务等。
- 安全管理:提供了安全管理模块,包括基于角色的访问控制、OAuth2认证等功能,可保护应用程序的安全。
- 日志管理:集成了日志管理工具,如Logback、Log4j2等,方便记录和管理日志信息。
Mybatis-Plus
一、概述
Mybatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上扩展了一些实用的功能,使开发更加简单、快速。Mybatis-Plus为简化开发、提高效率而生,它提供了丰富的内置功能,能够大大减少重复代码,提高开发效率。
二、核心特性
- 无侵入性:Mybatis-Plus在不改变MyBatis的情况下扩展了MyBatis,可以无缝集成到现有的MyBatis项目中。
- 强大的CRUD操作:Mybatis-Plus内置了通用Mapper、通用Service,通过少量配置即可实现单表大部分CRUD操作。它还提供了强大的条件构造器,支持灵活的条件组合、动态SQL生成等功能,使得查询条件的构造变得非常简单。
- 支持多种主键策略:Mybatis-Plus支持多达4种主键策略,包括自增主键、UUID主键、雪花算法主键等,可自由配置,完美解决主键问题。
- 支持Lambda形式调用:通过Lambda表达式,Mybatis-Plus可以方便地编写各类查询条件,无需再担心字段写错。
- 支持ActiveRecord模式:在ActiveRecord模式下,实体类只需继承Model类即可进行强大的CRUD操作。
- 内置代码生成器:Mybatis-Plus提供了简单易用的代码生成器,可以根据数据表自动生成Mapper、Model、Service、Controller等代码,大大减少了手写代码的工作量。
- 内置分页插件:Mybatis-Plus提供了分页插件,基于MyBatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询。分页插件支持多种数据库,如MySQL、Oracle、SQL Server等。
- 内置性能分析插件:Mybatis-Plus可输出SQL语句以及其执行时间,帮助开发者快速定位慢查询。
- 内置全局拦截插件:提供全表delete、update操作智能分析阻断,也可自定义拦截规则,预防误操作。
三、优势
- 简化开发:Mybatis-Plus通过简化常见操作,提高了开发效率,减少了样板代码。
- 快速开发:Mybatis-Plus适合需要快速开发和迭代的项目,通过提供大量的内置功能和自动化CRUD操作,可以加快开发进度。
- 标准化CRUD操作:Mybatis-Plus提供了标准化的CRUD操作接口,使得代码更加规范、易于维护。
- 活跃的开源项目和社区支持:Mybatis-Plus是一个活跃的开源项目,有一个强大的社区支持,社区中提供了大量的插件、扩展,可以满足各种不同的业务需求。
四、使用场景
- 需要快速开发和迭代的项目:Mybatis-Plus通过提供丰富的内置功能和自动化CRUD操作,可以加快开发进度,缩短项目周期。
- 需要大量标准化CRUD操作的项目:Mybatis-Plus提供了标准化的CRUD操作接口和条件构造器,使得代码更加规范、易于维护。
- 希望通过简化数据访问层代码来提高开发效率的项目:Mybatis-Plus的代码生成器和内置功能可以大大减少手写代码的工作量,提高开发效率。
PageHelper分页插件
PageHelper是一款基于MyBatis的分页插件,它简化了分页查询逻辑的编写,并支持多种分页方式和结果集排序、筛选等操作。
一、分页逻辑的实现
- 参数设置:
- 在调用查询方法之前,通过PageHelper.startPage()方法设置分页参数,包括当前页码(pageNum)和每页显示的记录数(pageSize)。
- 拦截查询:
- PageHelper通过MyBatis的拦截器机制,拦截所有的查询请求。在拦截器中检查当前请求是否设置了分页参数。
- 动态修改SQL:
- 如果当前查询设置了分页参数,PageHelper会根据数据库类型动态修改当前的查询SQL语句,增加获取当前页数据的SQL参数。例如,对于MySQL数据库,会在SQL语句中增加LIMIT语句来限制查询结果的数量和偏移量。
- 执行分页查询:
- 执行修改后的分页查询语句,获取分页后的结果集。
- 结果封装:
- 将查询结果封装到Page对象中,该对象包含了分页的相关信息,如当前页码、每页数量、总记录数、总页数等。然后,可以将Page对象转换为PageInfo对象,以获取更丰富的分页信息和操作。
二、分页方式的特点
- 物理分页:
- PageHelper实现的是物理分页,即在数据库层面直接进行分页查询,只返回当前页需要的数据,减少了数据传输量和内存消耗。
- 无侵入性:
- PageHelper的使用不会对原有的MyBatis配置