京淘 day02

1.SpringBoot 高级用法

1.1 为属性赋值操作

1.1.1 业务需求说明

说明: 当程序中出现了频繁变化的数据时,如果采用人为的方式进行修改并且变异打包则导致代码的耦合性较高.不便于维护.所以能否为属性动态赋值.

1.1.2 关于YML文件说明

YAML (YAML Aint Markup Language)是一种标记语言,通常以.yml或者.yaml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,
并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。
`# YML文件语法
    #  1. key:(空格)  value
    #  2. key与key之间有层级的缩进关系.
    2.  用**空格**来控制层级关系,左对齐的一列数据属于同一层级
    3.  字面默认不加单引号双引号
server:
  port: 8090

# 属性赋值操作,编辑属性时注意前缀.  只要springboot启动该数据就会被写入内存中 key-value格式
redis:
  host: 192.168.126.130
  port: 6379` 

1.1.3 为属性赋值操作

`//动态获取ip和端口数据
//@ResponseBody    作用1: 将对象转化为JSON  作用2: 如果返回值是String类型,则返回字符串本身
//                 作用3:  一般客户端发起ajax请求时,采用该注解返回数据, 将不会执行视图解析器操作
@RestController    @RestController注解告诉Spring将生成的字符串直接返回给调用者。
  @Value
*   字面量或者从环境变量、配置文件中获取`"${key}"`
*   表达式`"#{SpEL}"`
public class RedisController {

    @Value("${redis.host}") //spel表达式
    private String  host;   // = "192.168.126.130";      private String  host;   // = "192.168.126.130";
    @Value("${redis.port}")
    private Integer port;   // = 6379;

    @RequestMapping("/getMsg")
    public String getMsg(){

        return host + ":" + port;
    }
}` 

1.2 指定配置文件为属性赋值

说明: 由于YML配置文件中的数据一般都是系统级别的数据,所以一般的业务数据都会写到properties的配置文件中.

1.2.1 编辑properties配置文件

1.2.2 编辑RedisController

`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;

//动态获取ip和端口数据
//@ResponseBody    作用1: 将对象转化为JSON  作用2: 如果返回值是String类型,则返回字符串本身
//                 作用3:  一般客户端发起ajax请求时,采用该注解返回数据, 将不会执行视图解析器操作
@RestController
//动态的导入pro配置文件,交给spring容器进行加载.
@PropertySource("classpath:/properties/redis.properties")
public class RedisController {

    @Value("${redis.host}") //spel表达式
    private String  host;   // = "192.168.126.130";      private String  host;   // = "192.168.126.130";
    @Value("${redis.port}")
    private Integer port;   // = 6379;

    @Value("${pro.redis.host}")
    private String  proHost;
    @Value("${pro.redis.port}")
    private Integer proPort;

    //指定properties文件进行赋值操作.
    @RequestMapping("/getMsg")
    public String getMsg(){
        //从yml配置文件中动态获取
        return host + ":" + port;
    }

    @RequestMapping("/getPro")
    public String getPro(){

        return proHost + ":" + proPort;
    }
}` 

1.3 环境切换

业务说明:由于开发时都是链接公司自己的数据库/服务器等.把这个环境称之为"开发环境."
当开发完成之后需要进行上线部署,则需要链接"生产环境"
如果频繁的切换环境,则导致项目由于修改错误,导致问题的发生.
项目优化: 能否提供一种策略.简化上述操作的开发过程.

`#第一份配置文件,用来指定默认的环境标识 通过三个横杠的形式将yml文件划分为三个文件部分
spring:
  profiles:
    active: prod

---
# YML文件语法
    #  1. key:(空格)  value
    #  2. key与key之间有层级的缩进关系.

#指定环境的名称
spring:
  profiles: dev
server:
  port: 8090

# 属性赋值操作,编辑属性时注意前缀.  只要springboot启动该数据就会被写入内存中 key-value格式
redis:
  host: 192.168.126.129
  port: 6379

# 1.需要将环境一分为二
---
spring:
  profiles:  prod
server:
  port: 9000

# 属性赋值操作,编辑属性时注意前缀.  只要springboot启动该数据就会被写入内存中 key-value格式
redis:
  host: 111.111.111.111
  port: 7000` 

1.4 关于lombok说明

1.4.1 添加jar包

 `
        
            org.projectlombok
            lombok
        ` 



1.4.2 lombok案例

1.4.3 问题

说明:如果需要使用lombok工具就必须提前安装插件.如果在上线的时候Linux系统中,是否需要提前安装lombok插件?? 不需要安装.

原因: lombok插件在编译器有效. 将.java文件编译为.class文件时lombok会动态的添加get/set/toString…等方法.添加到.class文件中.
Linux上线部署时运行的时.jar文件 .jar包含的文件(.class文件)

1.4.4 知识小结

1.SpringBoot 开箱即用原理;
2.属性赋值的操作 @Value("${}")
3.动态导入资源文件 @PropertySource(“classpath:/properties/redis.properties”)
4.环境的切换 —, spring.profiles: dev ,默认的选项
5.lombok常用操作

2.SpringBoot整合Mybatis

2.1 新建项目


暂时只需要勾选webjar包即可

2.2 导入jt.sql的数据库

2.2.1 准备数据库工具

2.2.2 链接数据库

2.2.3 添加jar包文件

`

    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.4.RELEASE
         
    
    com.jt
    springboot_demo2_mybatis
    0.0.1-SNAPSHOT
    springboot_demo2_mybatis
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
        
            org.projectlombok
            lombok
        

        
        
            mysql
            mysql-connector-java
            runtime
        

        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

` 



2.2.4 编辑POJO对象

`@Data
@Accessors(chain = true)
public class User implements Serializable {
    private Integer Id;
    private String name;
    private Integer age;
    private String sex;
}` 



2.2.5 编辑UserDao接口

`@Mapper //将接口交给Spring管理
public interface UserDao {

    //查询user表的所有的记录
    @Select("select * from user")
    List findAll();

}` 



2.2.6 编辑测试类

package com.jt;

import com.jt.dao.UserDao;
import com.jt.pojo.User;
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
class SpringbootDemo2MybatisApplicationTests {

    @Autowired
    private UserDao userDao;

    @Test
    public void testFind(){

        List userList = userDao.findAll();
        System.out.println(userList);
    }
} 

你可能感兴趣的:(springboot)