Spring Boot学习笔记

Spring Boot

1.快速创建项目

1)idea创建project

Spring Initializr:

name:项目名

location:项目地址

type:Maven

Group:包名

Artifact:项目名

Packaging:Jar

Package name:默认创建一个启动类,放在此包下

2)选择需要的依赖和springboot版本

spring工程版本:默认最新版本

点击finish,第一次创建时会现在大量依赖。

删除无用文件:mvnw、mvnw.cmd、.mvn

3)将SE工程改为web工程

pom.xml:修改为spring-boot-starter-web。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

刷新Maven。

4)运行简单程序

src->main->java->找到application启动程序目录:

在启动程序目录下创建包和class:controller.testController.java

package com.example.test.controller;

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

@RestController
public class testController {
    @GetMapping("/test")
    public String test(){
        return "hello SpringBoot !";
    }
}

浏览器访问http://localhost:8080/test

2.SpringBoot的目录结构

1.pom.xml

1)指定了一个父工程:指定当前项目为springboot,帮我们声明了starter依赖的版本。

2)项目的元数据:包名、项目名、版本号。

3)制定了properties信息:java版本号

4)导入了依赖:默认情况下导入spring-boot-starter和pring-boot-starter-test。

5)插件:spring-boot-maven-plugin

2.src目录

--main
    --java
        --包名
            --启动类.java #将controller类放在启动类的子包中或同级包中。
    --resourses
        --static #静态文件
        --templates #模板页面
        --application.properties #spring提供的唯一配置文件

3.SpringBoot项目的三种启动方式

  1. 运行启动类的main方法

  1. 采用Maven命令运行spring工程

Terminal:mvn sping-boot:run

  1. 采用jar包运行

1)将项目打包成jar文件

2)通过java-jar jar文件名启动项目

4.SpringBoot中常用的注解

  1. @Configuration和@Bean

1)Configuration相当于beans标签,代表的类是一个配置类

2)Bean相当于bean标签:

id=”方法名或注解中的name属性(优先级更高)“

class=“方法的返回结果”

<dependency> //添加一个依赖
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

创建实体对象:

@NoArgsConstructor
@Data
@AllArgsConstructor
public class user {
    private int id;
    private String name;
}

创建配置对象:

@Configuration //代表当前是一个配置类,相当于beans标签
public class userConfig {
    @Bean //创建一个实例,发到spring容器中。也可以是@Bean(name = "user1),此时引用该类时使用user1。
    public user User(){
        user User = new user();
        User.setId(1);
        User.setName("hh");
        return User;
    }
}

/*
相当于:
<beans>
    <bean id="User" class="com/example/springbootlearning/entity/user"/>
</bean>
 */

使用实体对象:

    @Autowired
    private user User;
//或者:@Resource(name = "user1")
//     private user User;
    @GetMapping("/user")
    public user User(){
        return User;
    }
  1. @SpringBootApplication

@SpringBootApplication是一个组合注解,包括:

1)@SpringBootConfiguration

就是一个configuration注解,代表启动类就是一个配置类。

2)@EnableAutoConfiguration

实现自动装配,SpringBoot工程启动时,运行一个SpringFactoriesLoader的类,加载MEAT-INF/spring.factories配置类(已经开启的),

通过SpringFactoriesLoader类中的load方法以for循环的方式逐个加载。

3)@ComponentScan

相当于<context:component-scan basePackage="包名“/>,帮助扫描注解。

5.SpringBoot常用配置

  1. SpringBoot配置文件格式

支持properties和yml,推荐使用yml格式。

1)yml文件会根据换行和缩进管理配置文件的位置。

2)yml文件相比properties文件更轻量级。

3)填写value时:后面一定要加空格。

2.多环境配置

1)创建多个配置文件,方式为application-环境名.yml

application-dev和application-prov:

    server:
    #项目端口
    port: 8080
    #项目路径
    servlet:
    context-path: /
server:
  #项目端口
  port: 8081
  #项目路径
  servlet:
    context-path: /boot

2)选择要使用的配置文件

创建application.yml文件:

        spring:
            profiles:
                active: 环境名
  1. 引入外部配置信息

1)引入单个信息:

定义配置信息:picPath: D:\xxx

引入配置信息:

 public class controller{
     @Value("${picPath}")
     private String picPath;
    
     @GetMapping("/picPath")
     public String picPath(){
         return picPath;
     }
}

2)引入一组配置信息

定义配置信息:

tests:
  a: 12
  b: 15
  c: 16

以注入容器的方式引用信息:

@ConfigurationProperties(prefix = "tests") //prefix的值为引用信息的名字
@Component
@Data
public class testsProterties {
    private String a;
    private String b;
    private String c;
}
public class controller{
    @Autowired
    private testsProterties testsproterties;

    @GetMapping("/getTests")
    public testsProterties getTest(){
        return testsproterties;
    }
}
  1. Spring热加载

1)在pom.xml中添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

2)在setting中修改配置信息

进入compiler,勾选Build project automatically

修改项目后,点击Build->Build Project即实现热加载。

6.xml方式整合Mybatis

1.导入依赖

<!-- mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid连接-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>
<!-- mybatis依赖-->
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
  1. 编写配置文件

1)准备实体类

在MySQL建立数据库。

idea连接数据库。

利用数据库自动生成表的实体类:在database中选中对应的表,右键——>Scripted Extensions——>

Generate POJOs.groovy——>选择实体类所在文件夹——>修改实体类的包名和注解。

package com.example.springbootlearning.entity;
import lombok.Data;
@Data
public class Air {
private long id;
private long distinctId;
private long pm2_5;
private java.sql.Date time;
}

2)创建mapper接口

package com.example.springbootlearning.mapper;

import com.example.springbootlearning.entity.Air;

import java.util.List;

public interface AirMapper {
    List<Air> findAll();
}

在启动类中添加注解,扫描mapper接口所在的包:

@SpringBootApplication
@MapperScan(basePackages = "com.example.springbootlearning.mapper")
public class SpringBootLearningApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootLearningApplication.class, args);
    }

}

3)准备映射文件

resours——>mapper——>AirMapper.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.example.springbootlearning.mapper.AirMapper"> <!--接口的全路径-->
<!--    根据接口内的抽象方法编写SQL语句-->
<!--    List<Air> findAll()-->
    <select id="findAll" resultType="Air">
        select * from air
    </select>
</mapper>

4)配置application-dev.yml文件:

# mybatis配置
mybatis:
  mapper-locations: classpath:mapper/*.xml  #扫描所有的mapper映射文件。
  type-aliases-package: com.example.springbootlearning.entity  #扫描实体类,别名扫描
  configuration:
    map-underscore-to-camel-case: true  #数据库字段名带_,而实体类名为大写,所以设置驼峰映射。

5)连接数据库信息

#连接数据库信息
spring:
  datasource:
    url: jdbc:mysql:///air 
    username: root #用户名
    password: root #密码
    driver-class-name: com.mysql.cj.jdbc.Driver #驱动名
    type: com.alibaba.druid.pool.DruidDataSource #数据类型
  1. 测试

1)在接口位置右键go to——>test——>勾选要测试的方法名,点击OK,即可自动创建测试类:

class AirMapperTest extends SpringBootLearningApplicationTests { //继承SpringBootLearningApplicationTests类可实现测试功能,要将该类设为public。

    @Autowired
    private AirMapper airMapper;  //将接口注入进来。

    @Test
    void findAll() {  //运行此方法查看查询结果。
        List<Air> list = airMapper.findAll();
        for (Air air : list){
            System.out.println(air);
        }
    }
}

7.注解方式整合mybatis

  1. 创建实体类的mapper接口

public interface DistrictMapper {
List<District> findAll();
}
  1. 添加mybatis注解

增删改查分别对应注解:@Insert, @Delete, @Update, @Select

同样需要在启动类添加@MapperScan注解

在yml配置文件中只需添加驼峰映射即可:

mybatis:
#  mapper-locations: classpath:mapper/*.xml  #扫描所有的mapper映射文件。
#  type-aliases-package: com.example.springbootlearning.entity  #扫描实体类,别名扫描————————注解方式不需要添加文件映射和别名扫描。
  configuration:
    map-underscore-to-camel-case: true  #数据库字段名带_,而实体类名为大写,所以设置驼峰映射。
public interface DistrictMapper {  //在mapper接口中插入注解,直接编写SQL语句。

    @Select("select * from distirct")
    List<District> findAll();

    @Select("select * from distirct where id = #{id}")
    District findOneById(@Param("id") Integer id);

    @Insert("insert into district values(#{id},#{name})")
    int add(@Param("id") Integer id, @Param("name") String name);
}
  1. 测试,看到执行的SQL语句

logging:
  level:
    com.example.springbootlearning.mapper: DEBUG  #使接口执行时在控制台打印所执行的SQL语句

测试方法与xml方式相同:

class DistrictMapperTest extends SpringBootLearningApplicationTests {
    @Autowired
    private DistrictMapper districtMapper;

    @Test
    void findAll() {
        List<District> list = districtMapper.findAll();
        for (District district : list){
            System.out.println(district);
        }
    }

    @Test
    void findOneById() {
        District district = districtMapper.findOneById(1);
        System.out.println(district);
    }

    @Test
    void add() {
        int add = districtMapper.add(4,"De");
        System.out.println(add);
    }
}

8.SpringBoot整合分页助手

  1. 导入依赖

<!--导入分页助手pageHelper-->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>
  1. 测试使用

class DistrictMapperTest extends SpringBootLearningApplicationTests {
    @Autowired
    private DistrictMapper districtMapper;

    @Test
    void findAllByPage(){  //测试分页助手
//        1.执行分页
        PageHelper.startPage(1,3);
//        2.执行查询
        List<District> list = districtMapper.findAll();
//        3.封装PageInfo类
        PageInfo<District> pageInfo = new PageInfo<>(list);
//        4.输出
        for (District district : pageInfo.getList()) {
            System.out.println(district);
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值