说明: SpringBoot程序启动时 默认加载application.yml文件. 说明: 通过图中可以发现,用户的数据被写死.如果后续需要修改数据,则必须修改代码.属性的耦合性高.不方便维护. 由于springBoot整合第三方框架时,可能会遇到多个属性赋值的问题.如果通过@Value的方式赋值,则代码比较繁琐.能否优化??? YML配置文件一般都保存的是第三方框架的整合配置,如果需要进行业务配置时,最好的方式应该指定pro文件. 说明:当程序代码修改之后,tomcat服务器可以自动的部署 开发程序时,可能会在生成环境下和测试环境中不停地切换. 如果频繁的修改YML配置文件,则可能导致错误. 1.YML文件写法 层级关系 空格 连接符:号 注意缩进. 目的:动态配置属性信息. 面试题: 说明:利用sqlYog的方式导入sql. 说明:进入数据库客户端. 说明:通过maven形式创建项目 说明:编辑pom.xml文件 添加上述操作. serverTimezone=GMT%2B8 东8区 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 问题1: 现在操作的数据库任然采用 sql语句的方式进行编辑. 操作sql的方式实质就是面对过程的操作方式. JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 核心理念: 以面向对象的方式操作数据库. 核心: 理论依据: 日志展现情况: 将MP的常规操作掌握.
1.SpringBoot 加强
1.1 关于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 表示从spring容器中动态获取数据. * 通过spel表达式动态取值 */ @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需求说明
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 { //有时可能会通过配置文件的形式为属性动态的赋值. /** * @Value 表示从spring容器中动态获取数据. * 通过spel表达式动态取值 @Value("${msg.username}") private String username; //用户名 @Value("${msg.age}") private Integer age; //年龄 */ /** * 批量为属性赋值,必须配合set方法才能赋值 */ 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配置文件说明
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 { /** * 1.之前通过yml配置文件赋值 * 2.现在通过pro文件方式赋值 */ @Value("${msg.username2}") private String username; @Value("${msg.age2}") private Integer age; @RequestMapping("/getMsg2") public String getMsg2() { return username + ":" + age; } }
1.4 热部署工具
<!--支持热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
1.5 YML配置文件环境切换
1.5.1 需求说明
可以使用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配置文件写法
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环境切换
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导入数据库
导入之后,刷新数据库信息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 创建项目
4.1.2 编辑项目名称
4.1.3 添加继承/依赖/插件
<!--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
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/*.xml #开启驼峰映射 configuration: map-underscore-to-camel-case: true
4.2.4编辑UserMapper映射文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.jt.mapper.UserMapper"> <!-- resultType="包名.类名" 如果配置了别名包则可以自动的拼接. --> <!-- <select id="findAll" resultType="User"> select * from user </select> 关于驼峰映射说明: 字段信息: user_id , user_age , user_name 对象属性: userId , userAge ,userName 如果需要实现属性与字段的映射,则必须开启驼峰规则. 字段信息~~~user_id~~~~~去掉_线~~~~~之后首字母大写~~~~userId 改名字可以与对象的属性映射. 注意事项: 如果一旦开启驼峰规则映射,则必须按照要求执行. 字段:user_id 不能映射 属性:user_id --> </mapper>
4.2.5测试代码
package com.jt.test; import java.util.List; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import com.jt.mapper.UserMapper; import com.jt.pojo.User; @SpringBootTest //springBoot测试注解 开启了spring容器 public class TestMybatis { @Autowired private UserMapper userMapper; @Test public void findAll() { List<User> userList = userMapper.findAll(); System.out.println(userList); } }
5 MybatisPlus(MP)
5.1 MybatisPlus 介绍
5.2 MP的特性
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 – Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作5.3 历史背景
需求: 由于传统的sql 开发效率低,并且无论多么简单的sql都需要程序员自己编辑.很繁琐(无趣).
想法: 能否以面向对象的方式操作数据库!!!5.4 JPA说明
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。5.5 MybatisPlus实现原理
1. 表与对象建立关联关系
对象名称 ———> 表名
对象的属性 ——-> 数据表中的字段.
2. 采用第三方接口 规范所有的单表操作规则.(封装思想)
3. 将CURD接口方法,必须按照sql的规范转化为指定的sql语句.
userMapper.insert(user); //程序员只写到这里.
sql: insert into 表名(字段名…) values (属性值…);
按照用户的调用发方法,动态拼接sql.之后交给Mybatis去执行.
拼接sql:
insert into user表(字段A,字段B,字段C…) values (属性值A,属性B,属性C…);5.6 MP入门案例
5.6.1 导入jar包
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jt</groupId> <artifactId>springBootDemo2</artifactId> <version>0.0.1-SNAPSHOT</version> <!--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> <!--引入数据库驱动 --> <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-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> </dependencies> <!--负责项目打包 更新 maven操作相关的配置 必须添加 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
5.6.2 配置User对象
package com.jt.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain = true) @TableName //与表进行关联 如果名称一致,则可以省略不写. public class User { //属性一般都与表字段对应 @TableId(type = IdType.AUTO) //主键自增标识. private Integer id; //@TableField(value = "name") //如果属性名称与字段名称一致(包含驼峰规则) 可以省略不写 private String name; private Integer age; private String sex; }
5.6.3 继承BaseMapper接口
5.6.4 修改YML配置文件
5.6.5 MP入门案例
@SpringBootTest //springBoot测试注解 开启了spring容器 public class TestMybatis { @Autowired private UserMapper userMapper; /** * 以MP方式操作数据库,则以后单表操作不写sql. */ @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/*.xml #开启驼峰映射 configuration: map-underscore-to-camel-case: true #添加日志 logging: level: #mybatis指定mapper接口 以debug的形式展现日志. com.jt.mapper: debug
5.7 MybatisPlus API说明
5.7.1查询测试
/** * 1.新增 */ @Test public void insert() { User user = new User(); user.setName("MybatisPlus入门") .setAge(18) .setSex("女"); userMapper.insert(user); System.out.println("入库成功!!!"); } /** * 案例:查询Id=53的用户信息 * 参数充当where条件 */ @Test public void select01() { User user = userMapper.selectById(53); System.out.println(user); } /** * 案例:查询name="孙尚香" sex=女性 用户. * queryWrapper:条件构造器 拼接where条件 * 逻辑运算符 = eq, > gt , < lt * >= ge, <= le */ @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); } /** * 查询用户age<18岁 或者 age >100岁 */ @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); } /** * 查询id= 1,3,6的用户 */ @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.作业
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算