乐趣区

关于java:SC项目02属性赋值环境切换及整合Mybtis

1.SpringBoot 高级用法

1.1 为属性赋值操作

1.1.1 业务需要阐明

阐明: 当程序中呈现了频繁变动的数据时, 如果采纳人为的形式进行批改并且编译打包则导致代码的耦合性较高. 不便于保护. 所以是否为属性动静赋值.

1.1.2 对于 YML 文件阐明

# YML 文件语法
 # 1. key:(空格) value
 # 2. key 与 key 之间有层级缩进关系
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
public class RedisController {@Value("${redis.host}")  //spel 表达式
 private String host; //="192.168.126.129";
 @Value("${redis.port}")
    private Integer port; //=6379;
    // 指定 yml 文件进行赋值
@RequestMapping("/getMsg")
public String getMsg(){return host+":"+port;}

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

阐明: 因为 YML 配置文件中的数据个别都是零碎级别的数据, 所以个别的业务数据都会写到 properties 的配置文件中.

1.2.2 编辑 RedisController

// 动静获取 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.129";
 @Value("${redis.port}")
    private Integer port; //=6379;
 @Value("${pro.redis.host}")
    private String proHost;
 @Value("${pro.redis.port}")
    private String proPort;
 // 指定 yml 文件进行赋值
 @RequestMapping("/getMsg")
    public String getMsg(){return host+":"+port;}
    // 指定 properties 文件进行赋值
 @RequestMapping("/getProp")
    public String getProp(){return proHost+":"+proPort;}
}

1.3 环境切换

业务阐明: 因为开发时都是链接公司本人的数据库 / 服务器等. 把这个环境称之为 ” 开发环境.”
当开发实现之后须要进行上线部署, 则须要链接 ” 生产环境 ”
如果频繁的切换环境, 则导致我的项目因为批改谬误, 导致问题的产生.
我的项目优化: 是否提供一种策略. 简化上述操作的开发过程.

# 第一份配置文件, 用来指定默认的环境标识
spring:
  profiles:
    active: dev
---
# YML 文件语法
#  1. key:(空格)  value
#  2. key 与 key 之间有层级的缩进关系.
#指定环境的名称
spring:
  profiles: dev
# YML 文件语法
 # 1. key:(空格) value
 # 2. key 与 key 之间有层级缩进关系
server:
  port: 8090
# 属性赋值操作, 编辑属性时留神前缀. 只有 springboot 启动该数据就会被写入内存中 key-value 格局
redis:
  host: 192.168.126.130
  port: 6379
#宰割符号将环境一分为二
---
spring:
  profiles: prod
server:
  port: 9000
#属性赋值操作
redis:
  host: 111.122.122.122
  port: 7000

1.4 对于 lombok 阐明

1.4.1 增加 jar 包

1.4.3 问题

阐明: 如果须要应用 lombok 工具就必须提前装置插件. 如果在上线的时候 Linux 零碎中, 是否须要提前装置 lombok 插件?? 不须要装置.

起因: lombok 插件在编译器无效. 将.java 文件编译为.class 文件时 lombok 会动静的增加 get/set/toString…等办法. 增加到.class 文件中.
Linux 上线部署时运行的时.jar 文件 .jar 蕴含的文件 (.class 文件)

1.4.4 小结

1. 属性赋值的操作 @Value(“${}”)
2. 动静导入资源文件 @PropertySource(“classpath:/properties/redis.properties”)
3. 环境的切换 —, spring.profiles: dev , 默认的选项
4.lombok 罕用操作

2.SpringBoot 整合 Mybatis

2.1 导入 jt.sql 的数据库

2.2.1 筹备数据库工具

2.2.2 链接数据库


2.2.3 增加 jar 包文件

<?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_mybatis</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>springboot_demo2_mybatis</name>
 <description>Demo project for Spring Boot</description>
 <properties> <java.version>1.8</java.version>
 </properties>
 <dependencies>
 <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 临时 -->
 <dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>1.3.2</version>
 </dependency> <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> </dependencies>
 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin> </plugins> </build>
</project>

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 编辑 YML 文件

server:
  port: 8090
  servlet:
    context-path: /
spring:
  datasource:
    #driver-class-name: com.mysql.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

2.2.6 编辑 UserDao 接口

@Mapper
public interface UserDao {List<User> findObject();
}

2.2.7 编辑 mapper.xml 文件

<?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">
<mapper namespace="com.jt.dao.UserDao">
 <select id="findObject" resultType="com.jt.pojo.User">
 select * from user
   </select>
</mapper>

2.2.8 编辑测试类

@SpringBootTest
class SpringbootDemo2MybatisApplicationTests {
   @Autowired
 private UserDao userDao;
 @Test
 void findAll() {List<User> list = userDao.findObject();
 System.out.println(list);
 }
}

退出移动版