2021-07-24

7.24 springboot学习笔记

springboot快速入门

  1. 配置依赖:父工程,启动器
    具体代码:
	<parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.5.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId><!--启动器,不需要版本-->
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
  1. 创建启动引导类和控制类,访问地址是:localhost:8080/hello
    - 代码如下:
package com.itheima;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * spring boot工程都有一个启动引导类,这是工程的入口类
 * 需要在引导类上添加@springbootapplication
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

package com.itheima.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("hello")
    public String hello(){
        return "Hello Spring Boot!";
    }

}

java代码方式进行配置(注解方式)

  1. 导入依赖包(druid数据连接池)
  2. 编写jdbc.properties配置文件,编写配置类(为数据库连接做配置),代码如下:
@Configuration //表明这是个配置类
@PropertySource("classpath:jdbc.properties") //说明配置文件所在位置
public class JdbcConfig {
    @Value("${jdbc.driverClassName}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean //让返回值到spring容器中,便于直接注入
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}
  1. 可在cotroller类中直接进行测试,代码如下:
public class HelloController {
    @Autowired //直接注入所需要的数据源
    private DataSource dataSource;

    @GetMapping("hello")
    public String hello(){
        System.out.println("dataSource="  + dataSource);
        return "Hello Spring Boot!";
    }
  1. 使用@ConfigurationProperties进行属性注入
  • 该注解可以从Spring Boot的配置文件(默认必须为application.properties或者application.yml)中的配置项读取到一个对象中。
  • 有两种使用方法,一种是类上使用,一种是直接在方法上使用
    1. 实现步骤:
      • 创建配置项类JdbcProperties(包括get和set方法,属性名必须和必须要与 前缀之后的配置项名称保持松散绑定),类上添加注解@ConfigurationProperties;
      • 代码如下:
**
 * ConfigurationProperties 从application配置文件中读取配置项
 * prefix 表示 配置项的前缀
 * 配置项类中的类变量名必须要与 前缀之后的配置项名称保持 松散绑定(相同)
 */

@ConfigurationProperties(prefix = "jdbc") //若此时报错,则在依赖中添加如下代码:
/* <dependency>
            <groupId>org.springframework.boot</groupId>
            <!--不传递依赖-->
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>*/
public class JdbcProperties {
    private String driverClassName; //属性名必须要跟配置文件中jdbc点后面的相同
    private String url;
    private String username;
    private String password;

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
- 3.编写配置文件application.properties,将JdbcProperties对象用注解@EnableConfigurationProperties(JdbcProperties.class)注入到JdbcConfig中。
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
   @Bean
   public DataSource dataSource(JdbcProperties jdbcProperties){
       DruidDataSource dataSource = new DruidDataSource();
       dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
       dataSource.setUrl(jdbcProperties.getUrl());
       dataSource.setUsername(jdbcProperties.getUsername());
       dataSource.setPassword(jdbcProperties.getPassword());
       return dataSource;
    }
  1. 方法上使用实现步骤(前提:返回类有set方法):
    2021-07-24
  • 直接在配置文件中写如下代码:
@Bean
  @ConfigurationProperties(prefix = "jdbc")
  public DataSource dataSource(){
      return new DruidDataSource();
  }

ymal文件格式

  • 特征:
    • 树状层级结构展示配置项
    • 配置项直接有关系的话分行需要空两格
    • 配置项有值的话,需要在:后面空一格
    • eg:(将之前的.properties文件改成.yml文件之后还是需要上一节的@ConfigurationProperties写的方法生成dataSource)
jdbc:
	driverClassName: com.mysql.jdbc.Driver
	url: jdbc:mysql://localhost:3306/springboot_test
	username: root
	password: tl12345.
key:
	def: <!--集合类型格式-->
		- g
		- h
		- j
  • 多个yml配置文件在springboot中允许。这些配置文件的名称必须为application-***.yml ,并且这些配置文件必须要在application.yml配置文件中激活后才可以使用,例子如下:
    2021-07-24

  • 如果properties和yml配置文件同时存在在springboot项目中,则两类配置文件均有效,同名的配置项会以properties的文件为主。

springboot整合通用mapper

  • 通用mapper:可以不用自己写sql语句,它能自己拼接
    -2021-07-24

  • 添加依赖
    2021-07-24

用springboot搭建一个小项目

  • 需求:从数据库中取得数据并在页面上用json格式展示(游览器中导入JSONView扩展程序即可)

步骤如下:

  • 数据库中创建测试表
  • 建立引导类Application和控制类HelloControl
    * 导入依赖于pom.xml文件中,包括父节点和web启动器
    * 代码在第一章快速入门那 快速入门代码
  • .yml文件中配置好数据源,使用默认的heikari连接池
    * 需要先导入依赖
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
  • .yml文件中配置如下:
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: XXXX(你的密码)
        * 使用默认的数据连接池就不用在HelloControl中注入dataSource了
  • 创建实体类,用lombok插件得到set和get方法(只需要申明与表头相同的属性即可,要在实体类上添加@Data注解和@Table(name = “tb_user”) //告诉程序我们要查哪张表
    • 添加插件后还要导入依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
  • 创建UserService实现业务功能,使用通用mapper
    • 先导入依赖
    • <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency>
    • 建立UserMapper接口,继承Mapper<T>
    • public interface UserMapper extends Mapper<User> {}
    • 在userService中注入userMapper并编写查找方法
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User findById(Long id){
        //根据主键查数据
        return userMapper.selectByPrimaryKey(id);
    }
}
  • 在HelloControl类中注入userService,利用其中的查询方法查找数据库中的数据并展示在游览器端
@RestController //使得返回结果都是字符的样子
public class HelloController {

//    @Autowired 使用默认的hikari数据库不用导入数据连接池
//    private DataSource dataSource;
    @Autowired
    private UserService userService;

    @GetMapping("hello")
    public String hello(){
        //System.out.println("dataSource="  + dataSource);
        return "Hello Spring Boot!";
    }

    @GetMapping("/user/{id}")
    public User findById(@PathVariable Long id){
        return userService.findById(id);
    }
}
上一篇:js对象中的某属性与对象中的不符


下一篇:Springboot mysql链接设置