1.语法: k-v结构 key=value
2.数据类型: 默认是String数据类型 不要添加多余的""号
3.字符数据类型: properties的默认的加载的编码格式为ISO-8859-1 因此添加中文是须要字符转意.
4.缺点: 全部的key都必须手动的编辑 没有办法复用 因此引入了yml配置前端
1.语法 K-V结构 写法上 key:value 实质上 key=value
key:value中间使用 (:+空格) 分隔
key与key之间有父子级关系的. 因此写的时候注意缩进项.
YML配置文件默认的格式都是UTF-8编码 因此能够直接编辑中文java
2.例子:
server:
port: 8090mysql
1.知识扫盲
1.协议支持 http/https (osi7层网络模型 物数网传会表应)
2.Java针对于服务器端开发了一种传输机制 Servlet机制( TCP-IP协议规范) 用户使用servlet进行数据的传输的速度是较快的.
2.SpringMVC调用流程
问题: 用户发起请求 /addUser 是如何匹配到真实的业务方法的呢???
组件:
1.前端控制器 全部请求的中转站
2.处理器映射器 将用户的请求与执行的业务方法进行映射(绑定)
3.处理器适配器
4.视图解析器
jquery
package com.jt.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; @RestController //@ResponseBody 将返回值转化为json串使用 程序将不会执行视图解析器 直接返回 //@Controller //String类型/moduleAndView public class RedisController { private String host = "127.0.0.1"; private Integer port = 6379; //若是使用RestController 返回值为String类型则返回字符串自己 //若是返回的是一个对象 则结果必然是该对象的JSON数据. @RequestMapping("/getMsg") public String getMsg(){ return host + ":" + port; } }
需求: 有时对象中的属性的值可能会发生变化,若是直接写死到代码中可能致使耦合性高. 可否利用配置文件方式动态的为属性赋值.web
package com.jt.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; @RestController //@ResponseBody 将返回值转化为json串使用 程序将不会执行视图解析器 直接返回 //@Controller //String类型/moduleAndView public class RedisController { /** * 实现思路: * 若是能够从容器中获取数据的化,直接赋值给属性.则能够实现解耦 * 如何实现: * 注解实现: @Value("${配置文件的key}") * 表达式: spel 表达式 */ @Value("${redis.host}") private String host; @Value("${redis.port}") private Integer port; //若是使用RestController 返回值为String类型则返回字符串自己 //若是返回的是一个对象 则结果必然是该对象的JSON数据. @RequestMapping("/getMsg") public String getMsg(){ return host + ":" + port; } }
说明:因为YML配置文件通常都是配置第三方的整合的信息,若是将业务的数据添加到YML中则不规范.最好将业务的操做添加到properties文件中.面试
添加配置文件:
编辑RedisPro配置文件:ajax
@RestController //须要经过spring容器加载配置文件,而且以utf-8的格式进行加载 @PropertySource(value="classpath:/properties/redis.properties",encoding = "UTF-8") public class RedisProController { @Value("${redis.pro.host}") private String proHost; @Value("${redis.pro.port}") private Integer proPort; @RequestMapping("/getMsgPro") public String getMsg2(){ return proHost + ":" + proPort; } }
业务场景:
员工是外包人员,常常性的须要往返公司和甲方,进行代码调试时因为位置不一样因此服务器IP地址必然不一样.若是每次换环境都必须从新编辑IP地址和端口等数据,一定繁琐可否优化??redis
注意事项: 不管什么样的环境,配置的个数都是相同的,只有值不一样…spring
# 该配置文件,当spring容器启动时加载. spring: profiles: active: prod --- # 定义开发环境 spring: profiles: dev server: port: 8080 #配置redis节点信息 redis: host: 192.168.1.100 port: 6379 # 若是须要多环境配置则须要将YML环境分割 --- spring: profiles: prod server: port: 8090 #配置redis节点信息 redis: host: 10.0.0.1 port: 6379
1.添加jar包文件sql
<!--支持热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
组合键: ctrl + shift + alt + /
开启自动编译便可:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.jt</groupId> <artifactId>springboot_demo2</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot_demo2</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <skipTests>true</skipTests> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </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> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
package com.jt.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @Data //动态生成get/set/toString/equals等方法 @Accessors(chain = true) //开启链式加载结构 重构了set方法能够连续. @NoArgsConstructor //无参构造 必须添加 @AllArgsConstructor //全参构造 public class User { //实体对象的属性类型应该都是包装类型 Integer null //int=0 private Integer id; private String name; private Integer age; private String sex; /* 链式加载源码 public User setId(Integer id){ this.id = id; return this; }*/ }
问题: java项目开发完成以后须要在Linux系统中部署项目. 问题:Linux环境中是否须要单独安装LomBok插件???
考点: LOMBOK插件工做原理是否清楚…
A: 要 B:不须要
答案:B
解析: LOMBOK插件编译器有效 xxx.java文件----编译-----xxx.class 动态的生成set/get/toString等方法添加到.class文件中便可. Linux中运行的jar包是.class文件的集合 已经有了get/set方法.因此不须要引入插件.
1.serverTimezone=GMT%2B8 %2B 表明 "+"号 表示时区
2.useUnicode=true&characterEncoding=utf8 指定编码为utf-8
3.autoReconnect=true& 若是程序链接数据库中途断掉时是否重连.
4.allowMultiQueries=true 是否容许批量操做
eg: 要求一次入库3张表数据… 要求用一行sql实现该操做
server: port: 8090 servlet: context-path: / spring: datasource: #驱动版本问题 高版本须要添加cj关键字 通常能够省略 #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: #别名包定义 Mapper的resultType中只须要写类名 以后自动拼接便可 type-aliases-package: com.jt.pojo #加载指定的xml映射文件 mapper-locations: classpath:/mybatis/mappers/*.xml #开启驼峰映射 configuration: map-underscore-to-camel-case: true
<?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:通常与接口的路径一致--> <mapper namespace="com.jt.mapper.UserMapper"> <!--<select id="findAll" resultType="User"> select * from user </select>--> <!-- 业务需求: 要求实现数据库的查询,可是数据库表字段与对象的属性不一致. eg: user表(字段 user_id,user_name,user_age......) User对象(属性 userId,userName,userAge) 说明: 引入驼峰映射规则. 执行顺序: 1获取user_id~~~~去掉多余的"_"字母大写 ~~~~userId 实现数据的映射. 注意事项: 若是使用驼峰规则映射则必须知足规范.. --> <!--<select id="find" resultType="" resultMap="手动封装"></select>--> </mapper>
1. ORM思想 2. 提早预习MybatisPlus https://baomidou.com/ 面向对象的方式操做数据库 之后单表操做几乎不写sql 3. 经常使用ajax用法 jquery $.get() $.post() $.getJSON() $.ajax() 明确概念: 回调函数!!!!!