我是靠谱客的博主 开放萝莉,这篇文章主要介绍Spring Boot开发介绍Spring Boot介绍安装Spring Boot插件创建Spring Boot项目Maven pom文件介绍SpringBoot 项目打包SpringBoot properties配置文件SpringBoot yml文件说明利用properties文件为属性赋值/加载固定配置lombok插件SpringBoot项目介绍Spring 整合其他框架jQuery 获取数据Vue开发,现在分享给大家,希望可以做个参考。

Spring Boot开发介绍

  • Spring Boot介绍
  • 安装Spring Boot插件
  • 创建Spring Boot项目
    • Idea 创建Spring Boot项目失败
      • 解决方法1-更换为aliyun地址创建Spring Boot项目
      • 解决方法2-手工到spring网站生成项目后导入
  • Maven pom文件介绍
  • SpringBoot 项目打包
    • Maven jar包下载问题
    • 项目运行报错没有主清单信息
  • SpringBoot properties配置文件
  • SpringBoot yml文件说明
    • 多环境编辑
  • 利用properties文件为属性赋值/加载固定配置
  • lombok插件
    • Idea 安装插件
    • pom.xml 文件中添加依赖jar包
    • lombok 插件注解
  • SpringBoot项目介绍
    • 项目入口
    • 项目测试入口
    • SpringBoot支持热部署
    • 数据源介绍
    • 整合Mybatis相关配置
      • Mybatis相关注解
      • Mybatis 定义包别名及指定Mapper文件扫描路
      • 关于绑定异常报错处理
      • 数据库密码问题
      • Mapper对象创建流程
    • mybatis 采用基于接口开发方式
    • 整合Mybatis-plus
      • MP介绍
      • MP原理介绍
      • MP SQL转换过程
      • Mybatis-plus 注解
      • MP queryWrapper 条件构造器
      • Mybatis-plus 案例1
        • 导入jar依赖包
        • pojo类
        • 接口类继承BaseMapper
        • 修改YML配置文件
      • Mybatis 案例2
      • 解决注入警告问题
    • SpringMVC
      • Servlet作用
      • Spring MVC 重要组件说明(重要)
      • Sping MVC 调用过程
      • Sping MVC 开发注解
      • Sping MVC 简单参数传递
    • SpingMVC重定向和转发
      • 转发
      • 重定向
      • 重定向到外部网站
      • RestFul风格
        • 删除多个id的数据
  • Spring 整合其他框架
    • idea 编辑html时引入变量时显示错误
  • jQuery 获取数据
    • Ajax下载
      • Ajax 请求
      • Ajax 请求类型
  • Vue开发
    • Vue 展现问题{{xxx}}问题解决
    • MVVM 思想
    • Vue命令
    • 表单修饰符
    • 计算属性
    • 计算属性与方法的区别
    • 监听器
    • 过滤器
      • 过滤器级联
    • Vue声明周期
    • 数组
    • 组件

Spring Boot介绍

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
作用:SpringBoot的推出 让程序员更加专注于业务处理, SpringBoot是学习微服务框架基石
Spring 和SpringBoot关系 :
SpringBoot是Spring的工具API框架

安装Spring Boot插件

1)Idea 商业版本,自带Spring Boot插件无需安装
2)Idea 社区版本,需要安装Spring Boot 插件
在这里插入图片描述

创建Spring Boot项目

1)Idea商业版本创建项目:
在这里插入图片描述
2)选择依赖项:
在这里插入图片描述

Idea 创建Spring Boot项目失败

解决方法1-更换为aliyun地址创建Spring Boot项目

更换aliyun地址:https://start.aliyun.com/
在这里插入图片描述

解决方法2-手工到spring网站生成项目后导入

地址**:https://start.spring.io/
在这里插入图片描述

Maven pom文件介绍

parent 标签:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
<!--1.parent标签 父级工程 SpringBoot将现有主流的框架都进行了整合, 在内部完成了jar包的依赖的配置.如果用户需要,则只添加某些核心包 那么所有的依赖都会按照规则自动的下载. --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.5</version> <relativePath/> <!-- lookup parent from repository --> </parent>

依赖项:

复制代码
1
2
3
4
5
6
7
8
9
10
<!--Springboot通过启动项的方法的 进行jar包文件的加载. 同时这些功能中的配置项 SpringBoot有些也会自动的完成. 无特殊的要求 无需手动的配置. 开箱即用的思想!!!! --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

build标签:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--关于build标签说明: 1、build标签是Maven工程的要求。 2、作用:完成项目打包发布等一系列的功能 3、该标签的使用是SpringBoot必须的,如果没有该标签则项目无法使用jar包运行 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

SpringBoot 项目打包

在这里插入图片描述
在Maven本地仓库中找到对应的jar包
在这里插入图片描述
将jar包部署到指定目录(目录中不要包含中文、空格等特殊字符)

在这里插入图片描述
运行项目:

复制代码
1
2
java -jar springboot_demon_8080.jar

在这里插入图片描述

Maven jar包下载问题

在这里插入图片描述

解决方案:
1.检查maven配置是否正常 (切换maven软件)
2.检查IDEA配置maven是否正确
3.去本地仓库中删除原始jar包文件 ,之后更新maven重新下载.

项目运行报错没有主清单信息

在这里插入图片描述
解决方案:
检查是否有build标签

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- 关于build标签说明 1.build标签它是maven工程的要求. 2.作用: 完成项目的打包/发布等一系列的功能. 3.该标签的使用是SpringBoot必须的,如果没有该标签则项目无法使用jar包运行 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

SpringBoot properties配置文件

说明: 虽然pro文件是SpringBoot默认配置文件.但是其中编码格式比较繁琐,不便于查看.所以在项目中一般使用YML文件.
注1:程序读取properties文件时默认为iso-8859-1字符集格式
在这里插入图片描述

SpringBoot yml文件说明

复制代码
1
2
3
4
5
6
7
8
9
#YML文件语法 ##1.YML数据结构K-V结构 ##2.k与v需要使用 ”:空格“ 链接 ##3.YML配置文件有父子级关系,所以注意缩进项的位置 server: port: 8090 #配置端口 servlet: #web项目发布目录 context-path: / #/表示根目录

多环境编辑

环境分割线:—
默认环境选择:
spring:
profiles:
active: prod
定义环境名称:
spring:
config:
activate:
on-profile: prod
application.yml 详细配置:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#默认环境选项 spring: profiles: active: prod #环境分割 --- spring: config: activate: on-profile: prod server: port: 80 #配置端口 servlet: #web项目发布目录 context-path: / #/表示根目录 #环境分割 --- spring: config: activate: on-profile: test server: port: 80 #配置端口 servlet: #web项目发布目录 context-path: / #/表示根目录

注1:SpringBoot项目中,需要容器管理的对象代码必须是主启动类的同级目录或者子目录中。

利用properties文件为属性赋值/加载固定配置

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @Component //将对象交给Spring容器管理 @PropertySource(value = "classpath:/dept.properties",encoding = "UTF-8") //加载指定配置文件 public class Dept { //spel表达式 @Value("${dept.id}") private Integer id; @Value("${dept.name}") private String name; @Value("${dept.id2}") private Integer id2; @Value("${dept.name2}") private String name2; @Override public String toString() { return "Dept{" + "id=" + id + ", name='" + name + ''' + ", id2=" + id2 + ", name2='" + name2 + ''' + '}'; } }

dept.properties文件

复制代码
1
2
3
4
@程序读取时时默认为iso-8859-1字符集 dept.id2=110 dept.name2=spring测试

lombok插件

Idea 安装插件

在这里插入图片描述

pom.xml 文件中添加依赖jar包

复制代码
1
2
3
4
5
6
<!--引入插件lombok 自动的set/get/构造方法插件 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>

lombok 插件注解

@Data // data 是lombok 使用最多的注解, 自动生成get/set/toString/equals/hashCode 方法
@Accessors(chain = true) //重写set方法,返回this对象
@NoArgsConstructor //无参构造
@AllArgsConstructor //全参构造

SpringBoot项目介绍

项目入口

@SpringBootApplication注解,标注的类项目启动时会自动加载Spring容器
在这里插入图片描述

项目测试入口

@SpringBootTest注解,标注的类会自动加载Spring容器管理的对象
在这里插入图片描述

SpringBoot支持热部署

注1:支持热部署后硬件资源要求较高,建议8G内存以上
pom.xml引入热部署依赖jar包

复制代码
1
2
3
4
5
6
<!--支持热部署 缺点:IDEA使用特别占内存 配置了热部署之后内存开销将会增加 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>

idea 开启自动编译功能:
在这里插入图片描述

修改idea配置支持热部署:
IntelliJ IDEA开启热部署功能都会写到在IntelliJ IDEA中的注册表中开启compiler.automake.allow.when.app.running选项(Ctrl+Alt+Shift+/ 或者 Ctrl+Alter+A 选择 Registry),
此选项在IntelliJ IDEA 2021.2之后的版本迁移到高级设置中
安装中文插件后:
在这里插入图片描述

数据源介绍

application.yml

复制代码
1
2
3
4
5
6
7
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/jtadmin?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true username: root #检查密码是否正确 password: root

参数介绍:
serverTimezone=GMT%2B8 : GMT代表时区, %2B 代表“+” 东 , 8 东8时区;新版本驱动必须配置时区
useUnicode=true 代表使用Unicode编码
characterEncoding=utf8 代表使用utf-8字符集
autoReconnect=true 是否自动重连
allowMultiQueries=true 是否允许批量操作,同时执行多个SQL

整合Mybatis相关配置

Mybatis相关注解

@Mapper : 在单个Mapper接口类中添加,将当前接口交给Spring容器管理
@MapperScan(“com.jt.mapper”) :在主启动类上添加此注解开启Mapper接口扫描,指定相关目录后不需要在单独针对每个接口进行标注

Mybatis 定义包别名及指定Mapper文件扫描路

application.yml:

复制代码
1
2
3
4
5
6
7
8
9
#SpringBoot整合Mybatis配置 mybatis: #定义别名包 type-aliases-package: com.jt.pojo mapper-locations: classpath:/mybatis.mappers/*.xml #开启驼峰映射 configuration: map-underscore-to-camel-case: true

相关Mapper配置文件:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace 1.Mapper.xml配置文件的唯一标识 2.需要与Mapper接口保持一致. UserMapper.findAll(); 通过方法映射Sql语句!!! --> <mapper namespace="com.jt.mapper.DemoUserMapper"> <!--编辑更新操作 #mybatis中的一种表达式写法 --> <update id="updateUser"> update demo_user set name=#{nowName} where name=#{oldName} and sex=#{sex} </update> <!-- 完成用户入库操作 id="与方法名称保持一致" sql结束时不需要添加;号 在Mysql数据库中执行;号没有问题, 但是如果在Oracle中执行则必然报错. --> <insert id="insertUser"> insert into demo_user(id,name,age,sex) value(null,#{name},#{age},#{sex}) </insert> <!--查询标签必须有返回值 resultType :直接返回POJO对象的数据 单表查询 resultMap: 适用于关联查询的结果封装 一般采用第三方对象接收 问题:能否将不变的包路径进行优化??? 解决方案: 定义别名包即可 说明: resultType="包名.类名" resultType="com.jt.pojo.DemoUser" 定义别名包 type-aliases-package: com.jt.pojo resultType="DemoUser" 可以直接返回对象的名称 程序解析时: 首先根据别名包的名称进路径的拼接 com.jt.pojo.DemoUser --> <select id="findAll" resultType="DemoUser"> select * from demo_user </select> <!--更新操作的标签就是为了方便程序员开发时使用,程序 执行时没有任何的差别,所以可以混用 <insert id=""> </insert>--> </mapper>

关于绑定异常报错处理

绑定异常:mapper的接口与xml的映射文件绑定异常

复制代码
1
2
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.jt.mapper.DemoUserMapper.findAll

解决方法:
1).检查Mapper接口的路径
在这里插入图片描述
2).检查mapper.xml引入过程
在这里插入图片描述
3).检查mapper.xml映射文件
在这里插入图片描述
4).检查方法名称
检查mapper接口方法名称,与标签的ID是否一致.
在这里插入图片描述
5). 清空/重新编译项目
1).clean项目
在这里插入图片描述
2).build项目
在这里插入图片描述
7).检查目录层级,是否使用/进行分割.
在这里插入图片描述

数据库密码问题

问题描述:创建数据库密码时以数字0开头,例如 012345时Mysql数据库存储时会去掉0;
解决方案:如果以特殊数字开头则用双引号包裹“012345”

Mapper对象创建流程

在这里插入图片描述

mybatis 采用基于接口开发方式

1、定义pojo类的操作接口

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jt.pojo.DemoUser; import java.util.List; //@Mapper //将mapper接口交给Spring管理 public interface DemoUserMapper extends BaseMapper<DemoUser> { //使用MP不要重载里面的方法 List<DemoUser> findAll(); void insertUser(DemoUser User); void updateUser(String oldName, String nowName, String sex); }

2、定义SQL

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace 1.Mapper.xml配置文件的唯一标识 2.需要与Mapper接口保持一致. UserMapper.findAll(); 通过方法映射Sql语句!!! --> <mapper namespace="com.jt.mapper.DemoUserMapper"> <!--编辑更新操作 #mybatis中的一种表达式写法 --> <update id="updateUser"> update demo_user set name=#{nowName} where name=#{oldName} and sex=#{sex} </update> <!-- 完成用户入库操作 id="与方法名称保持一致" sql结束时不需要添加;号 在Mysql数据库中执行;号没有问题, 但是如果在Oracle中执行则必然报错. --> <insert id="insertUser"> insert into demo_user(id,name,age,sex) value(null,#{name},#{age},#{sex}) </insert> <!--查询标签必须有返回值 resultType :直接返回POJO对象的数据 单表查询 resultMap: 适用于关联查询的结果封装 一般采用第三方对象接收 问题:能否将不变的包路径进行优化??? 解决方案: 定义别名包即可 说明: resultType="包名.类名" resultType="com.jt.pojo.DemoUser" 定义别名包 type-aliases-package: com.jt.pojo resultType="DemoUser" 可以直接返回对象的名称 程序解析时: 首先根据别名包的名称进路径的拼接 com.jt.pojo.DemoUser --> <select id="findAll" resultType="DemoUser"> select * from demo_user </select> <!--更新操作的标签就是为了方便程序员开发时使用,程序 执行时没有任何的差别,所以可以混用 <insert id=""> </insert>--> </mapper>

3、测试代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test public void testInsert(){ DemoUser user = new DemoUser(); user.setId(0).setName("mybatis信息2").setAge(18).setSex("男"); userMapper.insertUser(user); } @Test public void testUpdate(){ String oldNmae="mybatis信息"; String nowNmae="测试信息"; String sex="男"; userMapper.updateUser(oldNmae,nowNmae, sex ); }

整合Mybatis-plus

MP介绍

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

Mybatis-plus官网:

MP原理介绍

1.对象与数据表进行关联 @TableName
2.MP采用BaseMapper的方式 将公共的接口方法进行了抽取. 采用泛型T的方式进行约束
3.MP将用户操作的对象在底层自动的转化为Sql语句!!!

MP SQL转换过程

对象方法: userMapper.insert(User对象);
Sql语句: insert into demo_user(id,name…) value(100,xxx…)
步骤:
1.根据userMapper找到对应的class类型
2.根据userMapper的类型通过反射机制获取父级接口类型BaseMapper
3.找到BaseMapper类型之后,获取泛型类型 User.class
4.获取User.class之后,获取class的注解名@TableName注解.获取注解名称. 至此表名获取成功
5.根据User.class获取其中的属性名称.之后获取属性上的@TableField 获取字段名称.
6.之后利用对象的get方法获取属性的值最终实现了Sql语句的拼接过程.
7.MP将整理好的Sql交给Mybatis(jdbc)去处理. 最终实现了以对象的方式操作数据库.

Mybatis-plus 注解

@TableName:对象与表绑定
@TableId:设置主键
@TableField:设置表字段与对象属性绑定

MP queryWrapper 条件构造器

queryWrapper 条件构造器 用于根据对象中不为null的属性拼接where条件;若两个方法之间不使用链接符(and/or)默认为and可以默认不写
常用方法:
.gt():大于
.lt():小于
.eq():等于
.ge():大于等于
.le():小于等于
.ne():不等于
.or():或者or
.and(): 并且and,默认链接符可以省略
.orderByDesc:按照指定列降序排列
.in(): SQL语句中的in关键字,不支持基本类型,需要使用对应的包装类型
.select():挑选指定的字段,进行查询

org.springframework.util.StringUtils类中hasLength()方法可以判断字符串是否为空串或者null.
注1:更多方法介绍参考官网条件构造器章节

测试代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jt.mapper.DemoUserMapper; import com.jt.pojo.DemoUser; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest public class TestMP { @Autowired private DemoUserMapper userMapper; @Test public void insert(){ DemoUser demoUser = new DemoUser(); demoUser.setName("MP测试").setSex("男").setAge(19); userMapper.insert(demoUser); } @Test public void updateById(){ DemoUser demoUser = new DemoUser(); demoUser.setName("中午吃什么").setAge(18).setId(234); /** * 原则:根据对象中部位null的属性当做set条件 * 如果是ById的操作,则ID必须赋值并且ID当做唯一where条件 */ userMapper.updateById(demoUser); } /** * 1、查询id=21的用户 1条记录 * 2、查询name=“白骨精” sex=女 的用户 List * 知识点: * 1、queryWrapper 条件构造器 拼接where条件的 * 根据对象中不为null的属性拼接where条件 */ @Test public void testSelect(){ //查询id=21的用户 DemoUser demoUser= userMapper.selectById(21); System.out.println(demoUser); //根据属性查询 DemoUser demoUser1=new DemoUser(); demoUser1.setName("白骨精").setSex("女"); QueryWrapper<DemoUser> queryWrapper = new QueryWrapper<>(demoUser1); List<DemoUser> userList=userMapper.selectList(queryWrapper); System.out.println(userList); } /** * 需求:查询age>18算 并且性别为女的用户 * Sql:select * from demo_user where age > 18 and sex="女" * 特殊字符: >:gt <:lt =:eq * >=:ge <=: le * 默认链接符:and 可以不写,若要使用or调用.or()方法 */ @Test public void testSelect2(){ QueryWrapper<DemoUser> queryWrapper= new QueryWrapper<>(); queryWrapper.gt("age", 18) .eq("sex", "女"); List<DemoUser> userList = userMapper.selectList(queryWrapper); System.out.println(userList); } /** * 联系like关键字: * 查询name中包含“精字的数据 * SQL: like "%精%“ * 以精开头 like "精%“ likeRight * 以精结尾 like "%精“ likeLeft */ @Test public void testSelect3(){ QueryWrapper<DemoUser> queryWrapper= new QueryWrapper<>(); queryWrapper.like("name", "精"); List<DemoUser> userList = userMapper.selectList(queryWrapper); System.out.println(userList); } }

Mybatis-plus 案例1

导入jar依赖包

pom.xml文件

复制代码
1
2
3
4
5
6
7
<!--spring整合mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency>

注意1:Mybatis-plus 依赖添加后,需要删除Mybatis的依赖否则项目依赖有问题

pojo类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.experimental.Accessors; import org.springframework.stereotype.Component; @Component @Data @Accessors(chain = true) //重写Set方法实现返回this /** * 1.如果没有添加注解的属性值,则默认以类名字(DemoUser)当做表名demouser */ @TableName("demo_user") //对象与表绑定 public class DemoUser { @TableId(type = IdType.AUTO) //主键自增 //@TableId(type = IdType.ASSIGN_UUID) // uuid 随机hash算法,几乎保证不重复 private Integer id; //@TableField(value="name", exist = true) 如果表字段与属性一致且存在则可以不写 private String name; private Integer age; private String sex; }

接口类继承BaseMapper

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jt.pojo.DemoUser; import java.util.List; //@Mapper //将mapper接口交给Spring管理 /** * 注意事项:BaseMapper必须添加泛型对象,即操作的表名 */ public interface DemoUserMapper extends BaseMapper<DemoUser> { //使用MP不要重载里面的方法 List<DemoUser> findAll(); void insertUser(DemoUser User); void updateUser(String oldName, String nowName, String sex); }

修改YML配置文件

修改mybatis名字为mybatis-plus

复制代码
1
2
3
4
5
6
7
8
9
#SpringBoot整合MybatisPlus配置 mybatis-plus: #定义别名包 type-aliases-package: com.jt.pojo mapper-locations: classpath:/mybatis.mappers/*.xml #开启驼峰映射 configuration: map-underscore-to-camel-case: true

Mybatis 案例2

接口类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jt.pojo.DemoUser; import java.util.List; //@Mapper //将mapper接口交给Spring管理 /** * 注意事项:BaseMapper必须添加泛型对象,即操作的表名 */ public interface DemoUserMapper extends BaseMapper<DemoUser> { //使用MP不要重载里面的方法 List<DemoUser> findAll(); void insertUser(DemoUser User); void updateUser(String oldName, String nowName, String sex); }

pojo类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.experimental.Accessors; import org.springframework.stereotype.Component; @Component @Data @Accessors(chain = true) //重写Set方法 /** * 1.如果没有添加注解的属性值,则默认以类名字(DemoUser)当做表名demouser */ @TableName("demo_user") //对象与表绑定 public class DemoUser { @TableId(type = IdType.AUTO) //主键自增 //@TableId(type = IdType.ASSIGN_UUID) // uuid 随机hash算法,几乎保证不重复 private Integer id; //@TableField(value="name", exist = true) 如果表字段与属性一致且存在则可以不写 private String name; private Integer age; private String sex; }

application.yml配置文件:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#SpringBoot整合MybatisPlus配置 mybatis-plus: #定义别名包 type-aliases-package: com.jt.pojo mapper-locations: classpath:/mybatis.mappers/*.xml #开启驼峰映射 configuration: map-underscore-to-camel-case: true #添加MP日志 打印执行的sql logging: level: com.jt.mapper: debug

测试类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import com.jt.mapper.DemoUserMapper; import com.jt.pojo.DemoUser; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class TestMP { @Autowired private DemoUserMapper userMapper; @Test public void insert(){ DemoUser demoUser = new DemoUser(); demoUser.setName("MP测试").setSex("男").setAge(19); userMapper.insert(demoUser); } @Test public void updateById(){ DemoUser demoUser = new DemoUser(); demoUser.setName("中午吃什么").setAge(18).setId(234); /** * 原则:根据对象中部位null的属性当做set条件 * 如果是ById的操作,则ID必须赋值并且ID当做唯一where条件 */ userMapper.updateById(demoUser); } }

解决注入警告问题

参考csdn博客提供的6中解决方式:

SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

Servlet作用

说明: servlet是浏览器与服务器(tomcat) 进行交互的一种机制.
核心对象:
1.Request 包含了用户的所有的请求相关信息(参数…协议…地址…)
2.Response 包含了服务器相关的信息(服务器地址,返回的数据)

Spring MVC 重要组件说明(重要)

1)前端控制器 Dispatcherservlet(内部核心机制)接收用户所有的请求
2)处理器映射器 HandlerMapping 查找用户的请求与业务处理方法
3)处理器适配器 HandlerAdapter 在众多处理器中挑选合适的处理器去执行业务
4)视图解析器ViewResolver 实现页面路径的拼接

Sping MVC 调用过程

1.当用户发起请求时,被SpringMVC框架中的前端控制器拦截.
2.由于前端控制器,并不清楚哪个方法与请求对应,所以查询处理器映射器.
3.当tomcat服务器启动,则处理器映射器会加载所有的@RequestMapping注解,将其中的路径与方法进行绑定. Map</请求路径,包名.类名.方法名(参数)>,将查找到的方法信息回传给前端控制器 进行后续调用.
4.秉承着松耦合的思想,前端控制器将查询得到的方法, 请求处理器适配器(mvc针对不同的配置文件有专门的处理器(运行程序的机制))挑选合适的处理器去执行(程序内置的规则 无需人为干预)
5.当挑选合适的处理器之后,程序开始真正的执行业务方法. Controller-Service-Mapper(Dao),执行业务. 当业务执行成功之后.返回统一的ModelAndView对象.
其中包含2部分数据 1-Model(服务器数据) 2.View(页面逻辑名称)
6.当前端控制器获取ModelAndView对象之后,交给视图解析器 解析View对象的逻辑名称. 动态的拼接前缀 + 页面逻辑名称 + 后缀. 最终形成了用户展现页面的全路径.
7.将Model数据填充到页面中的过程,叫做视图渲染. 渲染之后,将数据交给前端控制器处理.
8.将得到的完整页面 响应给用户进行展现.
在这里插入图片描述

Sping MVC 开发注解

@RequestMapping:实现web页面动作与java方法绑定
@RequestParam:用于控制输入参数

复制代码
1
2
3
4
5
6
7
8
/** *@RequestParam注解: * 1、name/value 接收参数的名称 * 2.required 默认值为true, 该数据必须填写 * 3、defaultValue:设定数据默认值,如果参数为null则设定默认值 * required=true与defaultValue互斥 */

Sping MVC 简单参数传递

SpingMVC重定向和转发

转发

概念: 由服务器内部进行页面的跳转.
说明: 一般情况下 SpringMVC内部 以转化为主.
在这里插入图片描述

重定向

说明: 当用户发起请求时,由服务器返回有效的网址信息.之后由用户再次发起请求的结构.
总结:多次请求,多次响应。

在这里插入图片描述

重定向到外部网站

return new ModelAndView(new RedirectView(“https://www.baidu.com”));
或者
return “redirect:https://www.baidu.com”;

RestFul风格

删除多个id的数据

Spring 整合其他框架

idea 编辑html时引入变量时显示错误

在这里插入图片描述
解决方案:
修改idea配置信息
在这里插入图片描述

jQuery 获取数据

Ajax下载

Ajax 请求

Ajax 请求类型

get请求
1、将参数以?号的形式进行拼接: http://localhost:8090/findUser?id=1&name=tom
2.get请求会将所有的参数动态拼接url中,相对不安全
3.get请求不适用于大量数据提交,各类浏览器对于get请求一般都有上限控制。
总结:
1.查询数据库时使用
2.获取简单数据时使用(页面/js/css…)
3.一般请求中get请求居多
post请求
1.post请求将所有的参数都会进行form的封装
2.如果需要传递海量的数据则首选post请求
3.post的请求使用form进行封装,相对于get请求更加安全。
总结:
1.提交海量的数据时使用
2.一般用来提交文件时使用。
3.一般用于提交数据使用

作业;实现数据的修改/删除/新增

Vue开发

Vue 展现问题{{xxx}}问题解决

MVVM 思想

1.M Model 代表数据
2.V View 代表视图
3.VM(view-model)视图与数据控制层

Vue命令

表单修饰符

1、number:将用户输入的内容内容转换为数值类型
2、trim 去除左右2边多余的空格
3、lazy:简化input框调用js的次数,当失去焦点时调用

计算属性

计算属性与方法的区别

考点:
1.方法调用时每次都会执行,调用多次时执行多次
2.计算属性调用时,有缓存,调用多次时实际只执行一次
3.如果数据被大量的引用则使用计算属性更好,效率高

监听器

用于业务处理

过滤器

一般使用过滤器格式化数据,价格、时间等

过滤器级联

Vue声明周期

数组

组件

最后

以上就是开放萝莉最近收集整理的关于Spring Boot开发介绍Spring Boot介绍安装Spring Boot插件创建Spring Boot项目Maven pom文件介绍SpringBoot 项目打包SpringBoot properties配置文件SpringBoot yml文件说明利用properties文件为属性赋值/加载固定配置lombok插件SpringBoot项目介绍Spring 整合其他框架jQuery 获取数据Vue开发的全部内容,更多相关Spring内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(113)

评论列表共有 0 条评论

立即
投稿
返回
顶部