1.SpringBoot 加强
1.1 关于YML文件说明
说明: SpringBoot程序启动时 默认加载application.yml文件.
# 语法: 1. key-value结构 2.key和value之间使用:(空格)进行分割
# 2.YML配置文件有层级结构
server:
port: 8090
servlet:
context-path: / #项目发布路径信息 默认条件下 /根目录
# tomcat服务器进行发布 默认发布路径地址webapps目录下
# / ROOT 项目路径
# /jt JT 项目路径
1.2 为属性赋值
1.2.1 为什么需要属性赋值
说明: 通过图中可以发现,用户的数据被写死.如果后续需要修改数据,则必须修改代码.属性的耦合性高.不方便维护.
解决方案: 能否利用配置文件动态的为属性赋值.
1.2.2 利用@Value为属性赋值
1.2.2.1编辑YML配置文件
# 语法: 1. key-value结构 2.key和value之间使用:(空格)进行分割
# 2.YML配置文件有层级结构
server:
port: 8090
servlet:
context-path: / #项目发布路径信息 默认条件下 /根目录
# tomcat服务器进行发布 默认发布路径地址webapps目录下
# / ROOT 项目路径
# /jt JT 项目路径
#指定用户配置文件信息
msg:
username: 许三多
age: 10
1.2.2.2利用注解取值
@RestController
public class MsgController {
//有时可能会通过配置文件的形式为属性动态的赋值.
@Value("${msg.username}")
private String username; //用户名
@Value("${msg.age}")
private Integer age; //年龄
@RequestMapping("/getMsg")
public String getMsg() {
return "返回值结果:"+username+":"+age;
}
}
1.2.3批量为属性赋值
1.2.3.1需求说明
由于springBoot整合第三方框架时,可能会遇到多个属性赋值的问题.如果通过@Value的方式赋值,则代码比较繁琐.能否优化???
1.2.3.2导入jar包
<!--添加属性注入依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
1.2.3.3实现属性赋值
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@ConfigurationProperties(prefix = "msg")
public class MsgController {
//有时可能会通过配置文件的形式为属性动态的赋值.
private String username; //用户名
private Integer age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@RequestMapping("/getMsg")
public String getMsg() {
return "返回值结果:"+username+":"+age;
}
}
1.3 指定配置文件为属性赋值
1.3.1 关于YML配置文件说明
YML配置文件一般都保存的是第三方框架的整合配置,如果需要进行业务配置时,最好的方式应该指定pro文件.
1.3.2定义pro文件
#key=value
#pro文件都是字符串信息 所以不需要添加""号
msg.username2=奥特曼
msg.age2=18
1.3.3实现属性赋值
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//默认条件下 使用ISO-8859-1的编码格式,所以中文乱码
@PropertySource
(value = "classpath:/properties/msg.properties",
encoding="UTF-8")
public class MsgController2 {
@Value("${msg.username2}")
private String username;
@Value("${msg.age2}")
private Integer age;
@RequestMapping("/getMsg2")
public String getMsg2() {
return username + ":" + age;
}
}
1.4 热部署工具
说明:当程序代码修改之后,tomcat服务器可以自动的部署
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
1.5 YML配置文件环境切换
1.5.1 需求说明
开发程序时,可能会在生成环境下和测试环境中不停地切换. 如果频繁的修改YML配置文件,则可能导致错误.
可以使用YML中环境切换解决该问题.
环境配置的要求: 环境中配置的内容必须"一致的"
1.5.2YML配置文件说明
# 语法: 1. key-value结构 2.key和value之间使用:(空格)进行分割
# 2.YML配置文件有层级结构
#指定默认的环境策略
spring:
profiles:
active: test
---
spring:
profiles: prod
server:
port: 8090
servlet:
context-path: / #项目发布路径信息 默认条件下 /根目录
# tomcat服务器进行发布 默认发布路径地址webapps目录下
# / ROOT 项目路径
# /jt JT 项目路径
#指定用户配置文件信息
msg:
username: 许三多
age: 10
--- #表示配置文件环境的分割
spring:
profiles: test
server:
port: 8080
servlet:
context-path: /test #项目发布路径信息 默认条件下 /根目录
msg:
username: 许三多
age: 10
1.6 引入lombok
1.6.1引入jar包
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
1.6.2安装lombok
1.6.3 校验
1.6.4 lombok案例
1.7 知识小节
1.7.1配置文件写法
1.YML文件写法 层级关系 空格 连接符:号 注意缩进.
2.pro文件 本身都是字符串不需要添加""号 注意字符集编码iso-8859-1 转化为utf-8 重新编辑.
1.7.2为属性赋值
目的:动态配置属性信息.
方式2:
取值前提: 先赋值,再取值
1.@value spel表达式
2@ConfigurationProperties(prefix = “msg”) 一般配合@data注解.
指定配置文件进行加载. @PropertySource(“classpath:/xxxxxxxx.properties”)
1.7.3环境切换
- 通过—实现配置文件分割
- spring.profiles: prod 定义环境名称
- spring.profiles.active: prod 指定默认的环境 注意缩进!!!
1.7.4lombok环境插件配置
面试题:
lombok:可以自动的生成get/set等方法.但是使用lombok时需要安装插件!!!
问题:如果要在Linux系统中运行java项目.是否需要安装lombok插件??? 不需要!!!
答: lombok在程序编译期有效,当程序由.java文件编译为.class文件时,lombok插件开始工作.动态生成了get/set等方法. 而Linux中运行的项目直接.jar包文件里边包含了.class类型文件.所以不需要lombok插件再次编译即可运行.
2.导入数据库
2.1导入jtdb的sql文件
2.1.1 文件位置
2.1.2编辑sqlYog
2.1.3导入数据库
说明:利用sqlYog的方式导入sql.
导入之后,刷新数据库信息
2.1.4手动导入数据库(了解)
说明:进入数据库客户端.
命令: mysql -u root -p root
导入指令: source D:\jtdb.sql;
3.git地址
https://gitee.com/liulaoshi666/JT2002.git
4.SpringBoot整合Mybatis
4.1创建项目
4.1.1 创建项目
说明:通过maven形式创建项目
4.1.2 编辑项目名称
4.1.3 添加继承/依赖/插件
说明:编辑pom.xml文件 添加上述操作.
<!--parent标签作用:管理所有被springBoot整合之后的jar包的版本定义 springBoot特点: 开箱即用 引入jar包就可以添加相对应的功能.
定义了当前springBoot2.3.1所有的相关依赖的版本号信息. -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<!--指定插件版本 -->
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!--跳过测试类打包 -->
<skipTests>true</skipTests>
</properties>
<dependencies>
<!--在webjar包的内部关联整合了所有的springMVC的jar包信息. 所以只需要引入一个jar包,则可以关联整合所有的有关mvc的依赖包信息 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加属性注入依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<!--负责项目打包 更新 maven操作相关的配置 必须添加 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
4.1.4 更新项目
4.2 SpringBoot整合Mybatis
4.2.1 添加jar包文件
<!--引入数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--springBoot数据库连接 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--spring整合mybatis 暂时 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
4.2.2 关于配置文件说明
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
serverTimezone=GMT%2B8 东8区
useUnicode=true&characterEncoding=utf8 使用指定的字符集编码
&autoReconnect=true 数据库连接断开之后,是否自动重连
&allowMultiQueries=true 是否允许批量操作sql语句. 一般查询居多 允许
4.2.3编辑YML配置文件
server:
port: 8090
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
mybatis:
#定义别名包
type-aliases-package: com.jt.pojo
#添加映射文件
mapper-locations: classpath:/mybatis/mappers
@Test
public void findAll() {
List<User> userList = userMapper.selectList(null);
System.out.println(userList);
}
}
5.6.6 开启日志
server:
port: 8090
servlet:
context-path: /
spring:
datasource:
#数据库驱动 高版本 com.mysql.cj.jdbc.Driver
#低版本 com.mysql.jdbc.Driver
#driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#引入mybatisplus配置
mybatis-plus:
#定义别名包
type-aliases-package: com.jt.pojo
#添加映射文件
mapper-locations: classpath:/mybatis/mappers
@Test
public void insert() {
User user = new User();
user.setName("MybatisPlus入门")
.setAge(18)
.setSex("女");
userMapper.insert(user);
System.out.println("入库成功!!!");
}
@Test
public void select01() {
User user = userMapper.selectById(53);
System.out.println(user);
}
@Test
public void select02() {
//1.利用对象封装参数,实现数据查询
//注意事项:利用对象只能实现 "="号操作
User user = new User();
user.setName("孙尚香")
.setSex("女");
//根据对象中不为null的元素拼接where条件,默认条件下使用and连接符
QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);
//2.方法2 利用条件构造器构建where条件
QueryWrapper<User> queryWrapper2 = new QueryWrapper<User>();
queryWrapper2.eq("name", "孙尚香")
.eq("sex", "女");
List<User> userList2 = userMapper.selectList(queryWrapper2);
System.out.println(userList2);
}
@Test
public void select03() {
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.lt("age", 18)
.or()
.gt("age", 100);
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);
}
@Test
public void select04() {
//1.api进行封装
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(6);
List<User> userList = userMapper.selectBatchIds(list);
//2.条件构造器进行封装
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.in("id", 1,3,4,5);
userMapper.selectList(queryWrapper);
}
@Test
public void select05() {
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.between("字段", "值1", "值2");
queryWrapper.like("name","精"); //包含精字 %精%
queryWrapper.likeRight("name","精"); //以精开头 精%
//queryWrapper.groupBy(column) //分组查询!!!
}
//作业:利用MP知识:将常规sql进行实现.
6.作业
将MP的常规操作掌握.