SpringBoot整合SSM

Spring框架

为团队开发,将复杂的框架进行整合,使程序从控制调用浑然一体,以一种统一的方式调用

核心:整合第三方框架

核心机制

  1. IOC-DI

    @RestController

    控制反转:将其他框架里的对象创建的权力交给sping容器管理,由spring容器管理对象的生命周期

    @Autowired

    依赖注入:创建对象时,对象中有依赖的属性,spring负责属性赋值

  2. AOP 面向切面编程

SpringMVC

作用:接受用户请求,完成业务处理,返回响应给用户

框架之间调用关系

  • SpringBoot
  • Spring
    • SpringMVC
      • Controller:接受前端参数
    • Spring
      • Service:对查询数据库后返回数据进行处理
    • Mybatis
      • Mapper:查询数据库获取数据

数据处理顺序

用户请求 --> Controller --> Service --> Mapper

​ Controller <-- Service <-- Mapper <-- 数据回传

  • controller类:

    • 构成

      • 注解

        1. @RestController :包含两注解

          ​ @Controller 包含@Component,将该类交给Spring容器管理(控制反转)
          ​ @ResponseBody 业务返回值时,将数据转化为JSON

        2. @GetMapping(“findUserById”):规定访问方式

        3. @Autowired:依赖注入,动态代理生成接口的实现类,再由此注解生成对象

        4. @CrossOrigin:解决跨域问题

      • 变量与方法

        1. private UserService userService;创建一个service接口对象(只有一个实现类,自动使用该实现类实现的方法)
    • 数据接收

      • SpringMVC框架封装了Servlet,自动将传入数据封装为对应属性、对象、数组

        若多个参数使用逗号分割,默认可用数组接收

        集合(加@RequestParam)不方便,不用

    • 关联:创建service接口对象

  • ServiceImpl实现类:

    • 构成

      • 注解

        1. @Service

        将该类交给spring容器管理

        @Service中包含@Component,可被controller类创建bean对象

        1. @Autowired 动态代理生成接口的实现类,再由此注解生成对象
      • 重写的Service接口的方法

    • 关联:继承实现service接口、创建mapper接口对象(JDK动态代理)

  • mapper接口

    • 注解:

      • @MapperScan(“cn.jt.mapper”) 包扫描,mapper层文件路径。写在主启动类

        写了后就不用在mapper层加@Mapper了

      • @Insert(“sql”)、@Select("")、@Update("")、@Delete("")注解写简单sql

    • 关联:被service实现类调用、通过mapper.xml调用sql

SpringBoot整合Mybatis

application.yml整合文件

server:
  port: 8090
  servlet:
    context-path: /

#Spring整合 1、数据源   2、mybatis
#serverTimezone=GMT%2B8 指定时区 %2B = + 东八区
#useUnicode=true&characterEncoding=utf8 开启使用unicode编码,指定utf8
#autoReconnect=true 断线是否重新连接
#allowMultiQueries=true 是否允许批量操作
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

mybatis:
  #配置别名
  type-aliases-package: cn.jt.pojo
  #第一个/表示根目录,加载指定xml映射文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

原mybatis-config.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--核心配置文件-->
<configuration>

    <!--mybatis的核心配置-->
    <settings>
        <!--开启驼峰自动映射规则-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!--配置别名-->
    <typeAliases>
        <!--只对某个类有效-->
        <!--<typeAlias type="cn.jt.pojo.DemoUser" alias="DemoUser"></typeAlias>-->
        <!--自动拼接包名-->
        <package name="cn.jt.pojo"/>
    </typeAliases>



    <!--环境配置标签,default默认环境-->
    <environments default="development">

        <!--编辑开发环境-->
        <environment id="development">
            <!--事务管理器-->
            <transactionManager type="JDBC"/>
            <!--mybatis采用数据库连接池的方式整合数据源-->
            <dataSource type="POOLED">
                <!--高版本数据库添加cj-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&amp;useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;allowMultiQueries=true"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>

    </environments>

    <!--Mybatis加载Mapper映射文件-->
    <mappers>
        <mapper resource="mybatis/mappers/DeptMapper.xml"/>
        <mapper resource="mybatis/mappers/EmpMapper.xml"/>
    </mappers>
</configuration>

报错

500:后台服务器异常

  • bound statement绑定异常:

    • 检查mapper.xml文件的namespace、select中的方法名绑定id
    • 检查application.yml中xml映射文件的导入mapper-locations
    • 检查application.yml中格式,是否顶格,是否有层级结构
    • 检查主启动文件中注解@MapperScan(“cn.jt.mapper”)
  • JDBC Connection数据库连接异常

    • 检查application.yml中数据库连接配置

SpringMVC参数传递

前端控制器:负责用户请求的接收,后端业务的分发

Servlet(Server Applet)

小服务程序或服务连接器

主要功能在于交互式地浏览和生成数据,生成动态web内容。

Servlet是java后台程序与用户交互的机制(媒介)

参数名称必须相同,请求存入Servlet,在从中取出

传入参数为String类型,需要手动转化 Integer.parseInt(age);

SpringMVC封装了Servlet,实现自动数据转化

参数传递get、post

  • 简单参数传递:

    MVC直接取值

  • 对象接收数据:

    多个数据,封装为 对象 或 对象+值

    不能有同名属性,有同名属性用逗号连接

  • 对象的引用赋值:

    参数重名问题 name dog.name user里封装一个dog对象

RestFul参数传递

  • 用户url编辑:

    • 参数用/分割
    • 顺序不可随意更改
    • 请求路径中不能出现动词:get、set、update,隐藏目的
  • 用户规范

    RestFul都是名词,不可区分请求业务逻辑

    采用请求类型,严格区分业务需求

    • GET 查询
    • POST 新增/form表单提交
    • PUT 修改
    • DELETE 删除
  • 参数接受

        @GetMapping("/user/{name}/{id}")
        public Object testRestFul(User user){
            return user;
        }
    
    • 参数用/分割

    • 参数用{}包裹

    • @PathVariable(“name”) String name 接收参数

      参数名与对象属性名一致,可以对象接收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值