SpringBoot学习笔记02

导读:本篇文章讲解 SpringBoot学习笔记02,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

四、配置文件

1. 名称

application.后缀

2. 后缀

properties:默认的后缀,存放的就是键值对
yml:格式要求非常严格,一般用得比较多
yaml:就是yml的另一种格式【如同html和htm关系】

3. yml语法

#简单键值对
name: jack

#对象
user:
  #属性
  username: lucy
  password: 1234
  #表示数组或者集合
  hobbies:
    - java
    - c
    - php
#数组
names:
  - zhangsan
  - lisi
  - wangwu

#对象
server:
  port: 8002
  servlet:
    context-path: /aaa

4. 配置文件的优先级

4.1 同级目录下

properties > yml > yaml

4.2 不同级且resources目录下

在resources目录下,config目录下的配置文件 > resources目录下的配置文件

4.3 不同级目录下

config目录(目录下包含配置文件)可以放在项目根目录和resources目录,项目根目录的config目录下的配置文件先生效

5. 加载配置文件的内容

5.1 获取简单参数、数组、对象属性

@Value

//获取简单参数
@Value("${name}")
String name;

//获取数组元素
@Value("${names[1]}")
String myname;

//读取对象的属性
@Value("${user.username}")
String username;

@Value("${server.port}")
Integer port;

@RequestMapping("/test2")
public String test2(){
    System.out.println("Demo01Controller test1");
    System.out.println("name:" + name);
    System.out.println("myname:" + myname);
    System.out.println("username:" + username);
    System.out.println("server.port:" + port);
    return "success";
}

5.2 获取对象

绑定到实体上

如:要使用阿里云的SMS功能【短信】,需要阿里云认证信息,而这些认证信息就可以绑定到实体上。一般用于第三方的配置信息

由此可以推出SpringBoot配置文件中有提示的内容,应该是SpringBoot内部进行了属性实体绑定等配置

@Data
@NoArgsConstructor
@AllArgsConstructor
@ConfigurationProperties(prefix = "user")    //配置文件内容绑定到实体上
@Component
public class User {

    private String username;
    private String password;
    private List<String> hobbies;

}

在这里插入图片描述

6. 多环境配置

软件开发会涉及到很多的环境,不同的岗位使用的环境不相同

  1. 开发:程序员自己写代码的电脑
  2. 测试:测试人员使用的环境
  3. 生产:上线部署的环境

6.1 配置文件实现

  1. 编写配置文件
  2. 名字要求:application-xxx.yml 【xxx:就是指对应的环境】
  3. 在application.yml核心配置文件中去激活指定的环境
#激活指定环境
spring:
  profiles:
    active: xxx

application.yml

在这里插入图片描述

6.2 运行参数实现

idea面板指定运行参数
在这里插入图片描述

五、常用功能

1. 静态资源

存放在resources/static目录下
直接通过客户端访问,无需加static目录

2. 模板文件

存放在resources/templates目录下
必须通过Controller进行视图跳转,而且需要导入thymeleaf的依赖
(thymeleaf后面会提到的~(#.#))

3. 日志集成

默认级别是info,比如log.info()
application.yml文件如下
在这里插入图片描述

4. 热部署(有时候不好用0_0)

  1. 依赖
    在这里插入图片描述
  2. 开启项目运行自动编译
    在这里插入图片描述
  3. Setting设置一下
    在这里插入图片描述
  4. 重启项目后才能生效(但是有时候怎么也不生效-_-!!)

六、SpringBoot整合Mybatis

  • 官方提供的起步依赖都是以 spring-boot-starter开头的
    非官方就不是以这个开头的,非官方的超步需要指定版本

1. 导入依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

2. application.yml

#整合mybatis
#1.数据库信息
spring:
  datasource:
    #mysql8.x版本驱动需要使用cj这个包
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/java2107?useSSL=false&serverTimezone=UTC&characterEncoding=UTF8&useUnicode=true
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

#mybatis信息
mybatis:
  #别名
  type-aliases-package: com.qf.java2107.springboot.demo02.pojo
  #驼峰映射开关
  configuration:
    map-underscore-to-camel-case: true
  #Mapper映射文件
  mapper-locations: classpath:mapper/*Mapper.xml

3. 写mybatis代码

mapper文件中的代码

package com.qf.java2107.springboot.demo02.mapper;

import com.qf.java2107.springboot.demo02.pojo.Department;

import java.util.List;

public interface DepartmentMapper {

    Integer save(Department department);

    List<Department> findAll();

}

mapper映射文件中的代码

<?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.qf.java2107.springboot.demo02.mapper.DepartmentMapper">

    <insert id="save" parameterType="Department">
        insert into t_department (dept_name) values (#{deptName})
    </insert>

    <select id="findAll" resultType="Department">
        select id, dept_name from t_department
    </select>

</mapper>

4. 引导类标记注解

SpringbootDemo01QuickApplication.class

@MapperScan(basePackages = {"com.qf.java2107.springboot.demo02.mapper"})    //mapper扫描器

5. 测试

import com.qf.java2107.springboot.demo02.Java2107SpringbootDemo02Application;
import com.qf.java2107.springboot.demo02.mapper.DepartmentMapper;
import com.qf.java2107.springboot.demo02.pojo.Department;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

//代表SpringBoot的测试类,会自动去加载引导类中内容
//当测试类不在引导类所在的包或子包下,一定要使用classes指定引导类的字节码文件
@SpringBootTest(classes = Java2107SpringbootDemo02Application.class)
class Java2107SpringbootDemo02ApplicationTests {

    @Autowired
    DepartmentMapper departmentMapper;

    @Test
    void saveTest() {
        Department department = new Department();
        department.setDeptName("测试2部");
        Integer row = departmentMapper.save(department);
        System.out.println("row = " + row);
    }

}

七、SpringBoot整合分页插件

1. 导入依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.1</version>
</dependency>

2. application.yml

pagehelper:
  helper-dialect: mysql
  reasonable: true

3. 使用

/**
 * 分页插件使用
 **/
@Test
public void pageHelperTest() throws Exception {
    PageHelper.startPage(1, 3);
    List<Department> list = departmentMapper.findAll();
    PageInfo<Department> pageInfo = new PageInfo<>(list);
    System.out.println(pageInfo);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/65686.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!