SpringBoot整合Mybatis实现简单的CRUD(1)

教你优雅的入门Spring Boot框架

技术栈

  • 后端: SpringBoot + Mybatis
  • 前端: Vue.JS + ElementUI

测试环境

  • IDEA + SpringBoot-2.0.5

项目设计

SpringBoot整合Mybatis实现简单的CRUD(1)_第1张图片

 

准备

开始实战Spring Boot项目,首先,你需要将Spring Boot工程搭建出来。

这次我们整合SpringBoot-Mybatis实现简单的CRUD业务。

需求:

  • 详解SpringBoot工程的构建、与SSM项目在工程搭建上的不同。
  • 实现SpringBoot-Mybatis整合征服数据库。
  • 解决页面跳转,详解与SSM阶段的不同。
  • 实现分页查询,使用PaheHelper插件和ElementUI分页控件。
  • 实现文件上传。
  • 使用Spring AOP切面编程实现简易的实现登录拦截工程。

如果觉得不错就点击右上角star鼓励一下笔者吧(#^.^#)

教你优雅的入门Spring Boot框架

技术栈

  • 后端: SpringBoot + Mybatis
  • 前端: Vue.JS + ElementUI

测试环境

  • IDEA + SpringBoot-2.0.5

项目设计

.
├── db  -- sql文件
├── mvnw 
├── mvnw.cmd
├── pom.xml  -- 项目依赖
└── src
    ├── main
    │   ├── java
    │   │   └── cn
    │   │       └── tycoding
    │   │           ├── SpringbootApplication.java  -- Spring Boot启动类
    │   │           ├── controller  -- MVC-WEB层
    │   │           ├── entity  -- 实体类
    │   │           ├── interceptor  -- 自定义拦截器
    │   │           ├── mapper  -- mybatis-Mapper层接口
    │   │           └── service  -- service业务层
    │   └── resources  -- Spring Boot资源文件 
    │       ├── application.yml  -- Spring Boot核心配置文件
    │       ├── mapper  -- Mybatis Mapper层配置文件
    │       ├── static  -- 前端静态文件
    │       └── templates  -- Thymeleaf模板引擎识别的HTML页面目录
    └── test  -- 测试文件

准备

开始实战Spring Boot项目,首先,你需要将Spring Boot工程搭建出来。

Spring Boot应用启动器

Spring Boot提供了很多应用启动器,分别用来支持不同的功能,说白了就是pom.xml中的依赖配置,因为Spring Boot的自动化配置特性,我们并不需再考虑项目依赖版本问题,使用Spring Boot的应用启动器,它能自动帮我们将相关的依赖全部导入到项目中。

我们这里介绍几个常见的应用启动器:

  • spring-boot-starter: Spring Boot的核心启动器,包含了自动配置、日志和YAML
  • spring-boot-starter-aop: 支持AOP面向切面编程的功能,包括spring-aop和AspecJ
  • spring-boot-starter-cache: 支持Spring的Cache抽象
  • spring-boot-starter-artermis: 通过Apache Artemis支持JMS(Java Message Service)的API
  • spring-boot-starter-data-jpa: 支持JPA
  • spring-boot-starter-data-solr: 支持Apache Solr搜索平台,包括spring-data-solr
  • spring-boot-starter-freemarker: 支持FreeMarker模板引擎
  • spring-boot-starter-jdbc: 支持JDBC数据库
  • spring-boot-starter-Redis: 支持Redis键值储存数据库,包括spring-redis
  • spring-boot-starter-security: 支持spring-security
  • spring-boot-starter-thymeleaf: 支持Thymeleaf模板引擎,包括与Spring的集成
  • spring-boot-starter-web: 支持全栈式web开发,包括tomcat和Spring-WebMVC
  • spring-boot-starter-log4j: 支持Log4J日志框架
  • spring-boot-starter-logging: 引入Spring Boot默认的日志框架Logback

Spring Boot项目结构设计

Spring Boot项目(即Maven项目),当然拥有最基础的Maven项目结构。除此之外:

  1. Spring Boot项目中不包含webapp(webroot)目录。
  2. Spring Boot默认提供的静态资源目录需要置于classpath下,且其下的目录名称要符合一定规定。
  3. Spring Boot默认不提倡用XML配置文件,主张使用YML作为配置文件格式,YML有更简洁的语法。当然也可以使用.properties作为配置文件格式。
  4. Spring Boot官方推荐使用Thymeleaf作为前端模板引擎,并且Thymeleaf默认将templates作为静态页面的存放目录(由配置文件指定)。
  5. Spring Boot默认将resources作为静态资源的存放目录,存放前端静态文件、项目配置文件。

  6. Spring Boot规定resources下的子级目录名要符合一定规则,一般我们设置resources/static为前端静态(JS,CSS)的存放目录;设置resources/templates作为HTML页面的存放目录。

  7. Spring Boot指定的Thymeleaf模板引擎文件目录/resources/templates是受保护的目录,想当与之前的WEB-INF文件夹,里面的静态资源不能直接访问,一般我们通过Controller映射访问。

  8. 建议将Mybatis-Mapper的XML映射文件放于resources/目录下,我这里设为resources/mapper目录,且src/main/java/Mapper下的Mapper层接口要使用@Mapper注解标识,不然mybatis找不到接口对应的XML映射文件。

  9. SpringBootApplication.java为项目的启动器类,项目不需要部署到Tomcat上,由SpringBoot提供的服务器部署项目(运行启动器类即可);且SpringBoot会自动扫描该启动器同级和子级下用注解标识的Bean。

  10. Spring Boot不建议使用JSP页面,如果想使用,请自行百度解决办法。

  11. 上面说了Spring Boot提供的存放HTML静态页面的目录resources/templates是受保护的目录,访问其中的HTML页面要通过Controller映射,这就间接规定了你需要配置Spring的视图解析器,且Controller类不能使用@RestController标识。

起步

首先:  我想特殊强调的是:SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。一定要切记这一点。

学习SpringBoot框架,只是为了更简便的使用Spring框架,我们在SSM阶段学习的知识现在放在Spring Boot框架上开发是完全适用的,我们学习的大多数是SpringBoot的自动化配置方式。

因为Spring Boot框架的一大优势就是自动化配置,从pom.xml的配置中就能明显感受到。

项目依赖

本项目的依赖文件请看Github仓库:spring-boot/pom.xml

初始化数据库

本项目数据库表设计请看GitHub仓库:spring-boot/db/

请运行项目前,先把数据库表结构建好

SpringBoot整合Mybatis

之前已经说过:SpringBoot框架不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式

所以说,SpringBoot整合Mybatis的思想和Spring整合Mybatis的思想基本相同,不同之处有两点:

  • 1.Mapper接口的XML配置文件变化。之前我们使用Mybatis接口代{过}{滤}理开发,规定Mapper映射文件要和接口在一个目录下;而这里Mapper映射文件置于resources/mapper/下,且置于src/main/java/下的Mapper接口需要用@Mapper注解标识,不然映射文件与接口无法匹配。

  • 2.SpringBoot建议使用YAML作为配置文件,它有更简便的配置方式。所以整合Mybatis在配置文件上有一定的区别,但最终都是那几个参数的配置。

关于YAML的语法请自行百度,我这里也仅仅是满足基本的配置需求,不涉及那种不易理解的语法。

整合配置文件

本例详细代码请看GitHub仓库:spring-boot/resources/application.yml

在Spring阶段用XML配置mybatis无非就是配置:1.连接池;2.数据库url连接;3.mysql驱动;4.其他初始化配置

SpringBoot整合Mybatis实现简单的CRUD(1)_第2张图片

注意:空格代表节点层次;注释部分用#标记

解释

  1. 我们实现的是spring-mybatis的整合,包含mybatis的配置以及datasource数据源的配置当然属于spring配置中的一部分,所以需要在spring:下。

  2. mapper-locations相当于XML中的用来扫描Mapper层的配置文件,由于我们的配置文件在resources下,所以需要指定classpath:

  3. type-aliases-package相当与XML中别名配置,一般取其下实体类类名作为别名。

  4. datasource数据源的配置,name表示当前数据源的名称,类似于之前的id属性,这里可以任意指定,因为我们无需关注Spring是怎么注入这个Bean对象的。

  5. druid代表本项目中使用了阿里的druid连接池,driver-class-name:相当于XML中的url代表XML中的username代表XML中的password代表XML中的;其他druid的私有属性配置不再解释。这里注意druid连接池和c3p0连接池在XML的的name中就不同,在此处SpringBoot的配置中当然名称也不同。

如果Spring整合Mybtis的配置你已经很熟悉了,那么这个配置你肯定也很眼熟,从英文名称上就很容易区分出来。这里需要注意的就是YAML语法规定不同行空格代表了不同的层级结构。

既然完成了SpringBoot-Mybatis基本配置下面我们实战讲解如何实现基本的CRUD。

实现查询

1.在src/main/java/cn/tycoding/entity/下新建User.java实体类

 

 2.在src/main/java/cn/tycoding/service/下创建BaseService.java通用接口,目的是简化service层接口基本CRUD方法的编写。

SpringBoot整合Mybatis实现简单的CRUD(1)_第3张图片

 

以上就是我对Service层基本CRUD接口的简易封装,使用了泛型类,其继承接口指定了什么泛型,T就代表什么类。

3.在src/main/java/cn/tycoding/service/下创建UserService.java接口:

 

 4.在src/main/java/cn/tycoding/service/impl/下创建UserServiceImpl.java实现类:

 4.在src/main/java/cn/tycoding/service/impl/下创建UserServiceImpl.java实现类:

SpringBoot整合Mybatis实现简单的CRUD(1)_第4张图片

 5.在src/main/java/cn/tycoding/mapper/下创建UserMapper.javaMapper接口类:

 

如上,我们一定要使用@Mapper接口标识这个接口,不然Mybatis找不到其对应的XML映射文件。

6.在src/main/resources/mapper/下创建UserMapper.xml映射文件:

 SpringBoot整合Mybatis实现简单的CRUD(1)_第5张图片

 7.在src/main/java/cn/tycoding/controller/admin/下创建UserController.java

SpringBoot整合Mybatis实现简单的CRUD(1)_第6张图片

 

8.运行src/main/java/cn/tycoding/SpringbootApplication.java的main方法,启动springboot

在浏览器上访问localhost:8080/findAll即可得到一串JSON数据。

你可能感兴趣的:(框架)