springboot2学习笔记(基础)

本文介绍了多种创建SpringBoot项目的方式,包括IDEA在线创建、Spring官网离线创建、阿里云创建和手动创建。接着讲解了SpringBoot的核心特性,如starter、引导类和内嵌Tomcat,并详细阐述了RESTful风格的开发。此外,还涵盖了SpringBoot的基础配置、整合Junit、MyBatis、MyBatis-Plus和Druid等第三方技术。最后,通过一个SSMP(SpringBoot+SpringMVC+MyBatis+PageHelper)的小项目展示了Lombok的使用和MyBatis-Plus的分页、条件查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、几种快速创建springboot工程的方法

1、通过idea创建(需要联网)

2、通过spring官网下载离线文件创建(spring.io)

3、阿里云创建(start.aliyun.com)

 4、手动制作(需提前导入jar包)

5、隐藏无用的文件

二、springboot简介及快速开发解析

1、starter解析

2、引导类解析

3、内嵌tomcat解析

三、REST风格开发简介

1、书写方式

2、具体方法

3、RESTful快速开发

四、SpringBoot的相关配置(基础)

1、小技巧———复制模块

 2、基础属性配置

五、整合第三方技术

1、整合Junit

2、整合MyBatis

3、整合MyBatis-Plus

 4、整合Druid

六、ssmp小项目

1、lombok

2、mp的分页

3、mp的条件查询

4、使用mp写业务层代码


一、几种快速创建springboot工程的方法

1、通过idea创建(需要联网)

红框为要更改的地方


2、通过spring官网下载离线文件创建(spring.io)

 

 得到模块的压缩包,解压后再idea中导入即可


3、阿里云创建(start.aliyun.com)

 选择相应的服务


 4、手动制作(需提前导入jar包)

就是仿照前面的工程创建的,创建的模块比较清爽


创建一个maven工程pom导入

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <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>
        </dependency>
    </dependencies>

主函数中

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

5、隐藏无用的文件


二、springboot简介及快速开发解析

SpringBoot是由Pivotal团队提供的全新的框架,其目的是用来简化spring应用的初始搭建以及开发过程。优点如下

  1. 起步依赖(简化依赖配置)
  2. 自动配置(简化常用工程的相关配置)
  3. 辅助功能(内置服务器)

1、starter解析

SpringBoot中常见的项目名称,定义里当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

  1. 开发SpringBoot程序需要导入坐标是通常导入对应的starter
  2. 每个不同的starter根据功能的不同通常包含多个依赖坐标
  3. 使用starter可以实现快速配置的效果,达到简化配置的目的

2、引导类解析

即application类,其中的SpringApplication.run(),其实就是加载SpringBoot自动生成的配置类。加载spring容器。

3、内嵌tomcat解析

  1. 内嵌的Tomcat服务器是SpringBoot辅助功能之一
  2. 内嵌Tomcat工作原理是江Tomcat服务器作为对象运行,并将该对像交给Spring容器进行管理
  3. 变更内嵌服务器的思想是去除 现有的服务器,添加全新的服务器
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
</dependency>

通过<exclusions></exclusions>排除服务器后,再添加自己的服务器


三、REST风格开发简介


  1. 隐藏资源的访问行为,无法通过地址得知对资源是何种操作(主要)
  2. 是一种约定方式并不是规范
  3. 描述模块的名称通常使用复数
  4. 简化输写

1、书写方式


2、具体方法

1、无请求参数

@RequstMapping(value = "/users" , method = RequestMethod.[GET,PUST,PUT,...])
@ResponseBody
public String a(){}

2、有请求参数

@RequstMapping(value = "/users/{id}" , method = RequestMethod.[GET,PUST,PUT,...])
@ResponseBody
public String a(@PathVariable Integer id){}

3、RESTful快速开发

对上面的的代码进一步简化

//@GetMapping,@PostMapping,@PutMapping ..
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){}

四、SpringBoot的相关配置(基础)

1、小技巧———复制模块

  1. 创建一个模板,删除其中的无关文件,保留src目录和pom.xml文件
  2. 修改pom.xml文件中的atifactId与新工程/模块名相同(一定)
  3. 删除name标签和description标签

 2、基础属性配置

三种文件格式,.properties,.yaml,.yml(主流)。

调用的优先级为.properties>.yml>.yaml。


1、.properties文件修改

在resource目录下的application.properties文件中进行修改,如

server. port = 8081

修改服务器端口

logging .level.root=debug

设置日志的级别

 采用键值对的格式,不能随意的进行配置,与你所使用的技术有关(如web等)

2、 .yeml和.yml文件修改

语法规则

  1. 大小写敏感
  2. 属性名冒号后面与数据之间有空格
  3. 用缩进表示层级关系(空格)

示例

 3、yml数据的读取

  • 使用@value("${属性名}")来普通读取
//读取单个数据
@Value("${属性名}")
private String a;

//读取数组数据
@Value("%{属性名[1]}") 
private String a;

//读取有层级关系的数据
@Value("${一级属性名.二级属性名...}")
private String a;
  • yml内引用数据

baseDri: c:\win10
tempDri: ${baseDri}\temp

如果用双引号括起来则转义字符有效

  •  获取全部数据(Environment)
@Autowired
private Environment env;
System.out.println(env.getProperty("属性名"));
  •  自定义对象封装指定数据
datasource:
 class_name: com.mysql.cj.jdbc.Driver
 url: jdbc:mysql:''localhost:3306/ssm_db?serverTimezone=UTC
 username: root
 password: root

@Component //生成bean
//前缀(父属性名)
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource{
    private String class_name;//变量名需与上面一样
    private String url;
    private String username;
    private String password;
}

注入就能使用


五、整合第三方技术

1、整合Junit

在创建一个boot模块时会自动导入Junit的相关starter

  1. 在测试类的上加上@SpringBootTest注解
  2. 将要测试的对象自动装配
  3. @Test

如果测试类不在引导类所在包或子包类,则spring就找不到Junit所对应的启动包得加上class

@SpringBootTest(classes = Springboot05JUnitApplication.class)

class JUnitApplication(){}

2、整合MyBatis

在创建boot工程时勾选mybatis和数据库驱动,自动导入相关的starter

在.yml中配置相关的属性就行,不用配置其他的东西

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xiangjiang?serverTimezone=UTC
    username: root
    password: 123456

如果是自己写的xml映射,则要配置映射文件路径

mybatis:
  mapper-locations: classpath:dao/*.xml

3、整合MyBatis-Plus

MyBatis-Plus是国人基于自己的开发习惯开发的技术

可以像整合MyBatis一样创建工程(得是阿里云的网站)但版本较低。

也可以用坐标导入对应的starter(mvnrepository.com)

<dependency>

        <groupId>com.baomidou</groupId>

        <artifacrId>mybati-plus-boot-starter</artifacrId>

        <version>3.4.3<version>

</dependency

 使用BaseMapper中定义了一些基本的sql操作如增删改查等

@Mapper
public interface BookMapper extends BaseMapper<Book> {

}
bookMapper.selectById(1);

yml的相关配置

mybatis-plus:
  global-config:
    db-config:
      id-type: auto #表示主键自动增长
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启日志

 4、整合Druid

用坐标导入对应的starter(mvnrepository.com)

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.8</version>
</dependency>

在yml中配置如下

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/xiaojiang?serverTimezone=UTC
      username: root
      password: 123456

六、ssmp小项目

1、lombok

一个java类库,提供里一组注解,简化pojo实体类的开发

坐标

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

一些注解

@Getter 生成get方法

@Setter 生成set方法

@Date 生成全部方法tostring等

2、mp的分页

需添加分页相关的拦截器,原理就是在sql的末尾拼接limit

@Configuration
public class MPConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor plusInterceptor = new MybatisPlusInterceptor();
        //添加相应的拦截器
        plusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return plusInterceptor;
    }
}

 具体使用

void contextLoads() {
    IPage bookPage = new Page(1,1);
    bookMapper.selectPage(bookPage,null);
}

3、mp的条件查询

几乎所有的查询都支持

String type = "计算机理论";
//使用lambda更方便
//或QueryWrapper<Book> qw = new QueryWrapper<>();
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<>();
lqw.eq(type!=null,Book::getType,type);
//相当于SELECT id,type,name,description FROM book WHERE type='计算机理论'
bookMapper.selectList(lqw);

4、使用mp写业务层代码

接口类

IService接口中定义了一些常用的业务层接口,需要一个实体类

public interface BookService extends IService<Book> {
}

实现类

ServiceImpl中定义了IService的实现类,需要dao的接口类和实体类

public class BookServiceImpl extends ServiceImpl<BookMapper,Book> implements BookService 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值