SpringBoot为属性赋值
如果将类中的属性直接赋值,则后台修改维护时不方便.
最好的方式应该通过配置文件的方法动态赋值.
利用@Value为属性赋值
编辑YML配置文件
#语法说明
#1.数据结构 k-v结构 k:(空格)v
#2.有层级关系 相同的层级可以缩进
#3.YML配置文件本身是utf-8格式,并且程序读取时也是utf-8编码 不会乱码
server:
port: 8090
servlet:
context-path: /
#为属性赋值
jdbc:
jdbcName: mysql数据库
jdbcUrl: 127.0.0.1:3306
编辑JDBCController
@RestController //标识返回值是JSON字符串
public class JDBCController {
/**
* 1.利用@Value注解 为属性赋值 spel表达式
* 原理:
* 1.Spring程序启动时,会加载YML配置文件,解析配置文件中的k-v格式,之后
* 保存到Spring所维护的map集合中.
* 2.当Spring程序解析RestController时,会实例化当前对象,需要为其中的数据利用
* @value注解完成赋值操作.
* 3.spring程序根据spel表达式的语法在map集合中根据key查找数据,
* 如果查询没有问题,则可以直接赋值.
* 如果查询不到数据,则spring容器启动报错
*/
@Value("${jdbc.jdbcName}")
private String jdbcName; // = "mysql";
@Value("${jdbc.jdbcUrl}")
private String jdbcUrl; // = "127.0.0.1:3306";
@RequestMapping("/getJDBC")
public String getMsg() {
return jdbcName + ":" + jdbcUrl;
}
}
批量为属性赋值
添加jar包文件
<!--添加属性注入依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
添加注解
@RestController //标识返回值是JSON字符串
@ConfigurationProperties(prefix="jdbc2") //程序自动的扫描前缀为jdbc2的属性
public class JDBCController2 {
/**
* 批量为属性赋值
* jdbcName: mysql数据库
jdbcUrl: 127.0.0.1:3306
要求:
1.YML配置文件中属性的名称应该与类中属性的名称一致.
2.需要配合SET方法完成赋值操作.
*/
private String jdbcName; // = "mysql";
private String jdbcUrl; // = "127.0.0.1:3306";
@RequestMapping("/getJDBC2")
public String getMsg() {
return jdbcName + ":" + jdbcUrl;
}
public String getJdbcName() {
return jdbcName;
}
public void setJdbcName(String jdbcName) {
this.jdbcName = jdbcName;
}
public String getJdbcUrl() {
return jdbcUrl;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
}
SpringBoot指定配置文件为属性赋值
指定配置文件为属性赋值
jdbc3.jdbcName=mysqlPro
jdbc3.jdbcUrl=127.0.0.1:3306
编辑JDBCController
添加注解,加载指定的配置文件
@RestController //标识返回值是JSON字符串
@PropertySource("classpath:/properties/jdbc.properties")
//加载指定的配置文件,之后交给Spring容器统一管理
public class JDBCController3 {
/**
* 赋值操作 2中 1.@value方式赋值 2.批量赋值
*指定配置文件
*/
@Value("${jdbc3.jdbcName}")
private String jdbcName;
@Value("${jdbc3.jdbcUrl}")
private String jdbcUrl;
@RequestMapping("/getJDBC3")
public String getMsg() {
return jdbcName + ":" + jdbcUrl;
}
}
程序热部署
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
LOMBOK插件配置
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
校验lombok插件是否安装成功
LOMBOK使用
@Data //生成get/set/toString/equals
@Accessors(chain=true) //表示链式加载 重写set方法,将对象返回
@NoArgsConstructor //添加无参构造 为以后框架的使用做准备
@AllArgsConstructor //全部参数的构造方法.
public class User {
private Integer id;
private String name;
private Integer age;
private String sex;
/**
* 重写set方法,实现对象的连续调用
*/
/*public User setId(Integer id) {
this.id = id;
return this;
}
public User setName(String name) {
this.name = name;
return this;
}*/
}
SpringBoot整合Mybaits
导入mybaits jar包
<!--引入数据库驱动 5.5/5.7 5.8数据库则去除版本,使用高版本驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<!--链接数据库代理 使用低版本驱动 -->
<version>5.1.32</version>
</dependency>
<!--springBoot数据库连接 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<!--SpringBoot的启动项 开箱即用 -->
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--spring整合mybatis 暂时 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
编辑YML配置文件
server:
port: 8090 #表示端口号信息
servlet:
context-path: / #项目发布路径
spring:
datasource:
#如果使用高版本驱动则配置如下
#driver-class-name: com.cj.mysql.jdbc.Driver
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.demo.pojo
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
数据源配置说明:
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
serverTimezone=GMT%2B8 %2B +
useUnicode=true 是否使用该编码 true
characterEncoding=utf8 指定输入的字符集编码 默认
autoReconnect=true 如果链接中断,是否允许重新链接
allowMultiQueries=true 是否允许执行多个sql语句.
别名包定义
mybatis:
#定义别名包
type-aliases-package: com.jt.pojo
<!--resultType="包名.类名"
需求:包路径能否简化 包路径进行抽取,在配置文件中只写类名.
可以通过别名包的形式动态拼接.
如果添加了别名包,则再写全路径是否报错呀? 没关系 程序会自动的检测
-->
<select id="findAll" resultType="User">
select * from user
</select>
mybatis:
#定义别名包
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mybatis/mappers/*.xml #动态的导入xml映射文件
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true #为了user_id与userId完美映射.无需手动转化
mapper的包扫描
@SpringBootApplication
//利用主启动类统一管理mapper的接口,利用包扫描的方式进行管理.
@MapperScan("com.jt.mapper")
public class SpringbootDemoMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoMybatisApplication.class, args);
}
}