1. 简介

        从前开发使用ssm框架(Spring Springmvc Mybatis)搭建项目,需要许多繁杂的配置以及Tomcat的开启关闭让我们使用时颇有怨言(我是这样的),而Spring也想到了这个问题所以开发了Springboot他是基于Spring 4.0开发的所以我们使用boot至少用Spring4.0版本,他简化了许多的配置,且内置Tomcat甚至Maven依赖都极大地简化了。

 2. 创建方式

        这里使用工具IntelliJ IDEA 2022.3.3   有两种创建方式

 2.1 第一种

        这种创建方式必须连网,直接在idea里新建工程找到Spring lnitializr的选项

mybatisplus springboot3对应关系 mybatis-springboot-starter_java

        点击Next后:

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring_02

         创建完成后就会自动加载依赖了。

mybatisplus springboot3对应关系 mybatis-springboot-starter_后端_03

 2.2 第二种

        直接使用Maven创建项目,手动增加依赖以及父级工程、启动类。

创建Maven工程:

mybatisplus springboot3对应关系 mybatis-springboot-starter_java_04

        把webapp文件夹删除一下并加一下 Springboot依赖以及父工程版本。

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_05

         加一下Java文件夹与启动类

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring boot_06

        启动类

@SpringBootApplication
public class SpringbootcsdnApp {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootcsdnApp.class,args);
    }
}

 2.3 测试

        请注意Springboot扫描注解是以启动类为范围,如启动类在com.dome包下那com.my包就扫描不到。

        如果需要扫描不是一个包下的请在启动类加上ComponentScan(basePackages=配置扫描的路径) 使用后会顶替启动类的扫描范围。

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring_07

        controller代码:

package com.lby.controller;


@RestController
@RequestMapping("My")
public class MyController {
    @GetMapping
    public String get(){
        return "芜湖";
    }
    
    
}

        直接在测试类运行:浏览器输入:localhost:8080/My

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_08

3. 资源文件

        资源文件在resources文件夹下他们的类型分为properties与yml文件在Spring里想使用资源文件默认必须以:application命名,我们的一些配置基本都是在资源文件里完成的。

        优先级为propertiesyml高。

 3.1 properties使用

        他的使用格式是 父级目录.子级=值

csdn.my.name=无梦相白

mybatisplus springboot3对应关系 mybatis-springboot-starter_后端_09

 3.2 yml使用

        他的使用格式是:        注:  值前面有空格

父级:

csdn:
  my:
   name: 无梦相白

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring_10

 3.3 注解@Value获取值

        使用方式:@Value("${ 资源文件中的路径 }") 会自动把值赋到注解下的属性上。

        把controller改一下

@RestController
@RequestMapping("My")
public class MyController {
    @Value("${csdn.my.name}")
    public String name;
    
    @GetMapping
    public String get(){
        return name;
    }


}

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_11

        我们可以看到确实是properties优先级更高

 3.4 注解@ConfigurationPropertiesScan获取多个值

@Data
@NoArgsConstructor
@AllArgsConstructor
@Component //加入到Spring容器
@ConfigurationProperties(prefix = "csdn.my")
public class User {
    private String name;
    private Integer age;
}

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_12

 

mybatisplus springboot3对应关系 mybatis-springboot-starter_java_13

4. 配置Web两大组件

        在Springboot由于没有xml所以只需要配置在配置类里就行了

        定义过滤器

public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("爷拦截着了");
        filterChain.doFilter(servletRequest, servletResponse);
    }
}

        定义Servlet

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

        直接定义配置类

@Configuration
public class MyConfig {
@Bean
    public ServletRegistrationBean<Servlet> servletRegistrationBean(){
    //注册Servlet的bean
        ServletRegistrationBean<Servlet> servletServletRegistrationBean = new ServletRegistrationBean<>();
    //获取Servlet把你的输入进去
        servletServletRegistrationBean.setServlet(new MyServlet());
    //定义路径    
        servletServletRegistrationBean.addUrlMappings("/servlet");
    //定义名称    
        servletServletRegistrationBean.setName("爷的servlet");

        return servletServletRegistrationBean;
    }
@Bean
    public FilterRegistrationBean<Filter> filterFilterRegistrationBean(){
    FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
    filterFilterRegistrationBean.setFilter(new MyFilter());
    filterFilterRegistrationBean.addUrlPatterns("/*");
    filterFilterRegistrationBean.setName("爷的过滤器");
    return filterFilterRegistrationBean;
}


}

5. starter自动装配以及包扫描原理

        我们在Spring项目里需要配置很多得xml文件,在Springboot里是starter帮我们配置了maven的一些starter依赖根据这些依赖进行通用的配置。

        比如:spring-boot-starter-web 这种后缀带有starter的。

自动装配以及包扫描的秘密全都在Springboot的启动类里。

 5.1 自动包扫描

        找到启动类并ctrl点进去,会发现这是一个复合注解

mybatisplus springboot3对应关系 mybatis-springboot-starter_后端_14

         默认的包扫描配置也就是ComponentScan但他根据启动类的位置帮我们配置好了,我们点入EnableAutoConfiguration注解。

mybatisplus springboot3对应关系 mybatis-springboot-starter_java_15

         在点入AutoConfigurationPackage注解

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring boot_16

         点入Registrar里

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring_17

        即可发现扫描注解以及注册成bean。

 5.2 自动装配

        找到启动类并ctrl点进去,看到EnableAutoConfiguration依旧是这个开启自动配置注解点进去看到他的@Import注解括号里的AutoConfigurationImportSelector点进去

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_18

         dbug一下

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_19

         动图有些模糊可以看下面

mybatisplus springboot3对应关系 mybatis-springboot-starter_java_20

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring boot_21

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring_22

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring_23

mybatisplus springboot3对应关系 mybatis-springboot-starter_java_24

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring_25

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_26

mybatisplus springboot3对应关系 mybatis-springboot-starter_后端_27

mybatisplus springboot3对应关系 mybatis-springboot-starter_资源文件_28

6. 整合Mybatis与德鲁伊连接池

 <!-- 加入依赖 注:这边使用的Springboot是2.3.2.RELEASE-->

<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.1</version> </dependency>

        在资源文件application.properties下配置连接池的数据源如果想配置其他的参数可以直接

如:spring.datasource.druid.initialSize=6

spring.datasource.druid.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=账户
spring.datasource.druid.password=密码
spring.datasource.druid.url=jdbc:mysql://localhost:3306/数据库?serverTimezone=Asia/Shanghai

        配置Mybatis的mapper路径 注:一般在资源文件夹下创建个mapper包里放mapper文件

mybatis.mapper-locations=classpath:/mapper/*.xml

mybatisplus springboot3对应关系 mybatis-springboot-starter_spring boot_29

         可以这样使用你需要的配置比如日志

mybatis.configuration.logImpl=org.apache.ibatis.logging.stdout.StdOutImpl

        使用Mabtis时接口不会被扫描到所以我们需要配置注解@Mapper加入到bean里,或者在启动类或配置类加上@MapperScan(basePackages = "接口路径" )

mybatisplus springboot3对应关系 mybatis-springboot-starter_后端_30

7. 整合pageHelper分页插件

<!--加入依赖-->
        <!--pageHelper的依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.5</version>
        </dependency>

        直接使用即可,springboot默认进行了配置但我们依旧可以在资源文件进行自定义配置。