# Spring Boot

Spring Boot

1. 关于Spring Boot

Spring Boot框架主要解决了创建工程后需要进行繁琐的配置的问题,是一个“开箱即用”的框架,其核心思想是“约定大于配置”。

2. 创建Spring Boot工程

使用IntelliJ IDEA的创建向导中的Spring Initializer即可创建Spring Boot工程。

在创建时,如果 https://start.spring.io 无响应,可尝试替换为 https://start.springboot.io。

在创建过程中,需要填写并关注的几项有:

  • Group Id:组Id,通常是公司的域名倒序排列的结果,例如cn.tedu
  • Artifact Id:坐标Id,应该是此工程的名称,如果名称中有多个单词,应该使用减号分隔,例如boot-demo
  • Java Version:使用到的Java版本,目前推荐选择8
  • Package:项目的根包,默认是由以上填写的Group IdArtifact Id组成

注意:如果Artifact Id中使用减号分隔了多个单词,在Package中默认并没有分开,通常建议手动添加小数点(.)进行分隔

注意:此处Package决定了默认的组件扫描,所以,在后续开发代码时,所有的组件类都必须放在此包或其子孙包下,在开发实践中,其实会把所有创建的类、接口都放在此包或其子孙包下,不是组件的类不添加组件即可

注意:当工程已经创建出来后,不要修改包的名称,除非你已经掌握了解决方案!

在添加依赖项时,首先需要注意的就是Spring Boot的版本号,通常非常不建议使用较新的版本号,建议使用的是半年或1年之内的版本即可!如果在创建向导的界面没有需要的版本号,可以随便选一下,当项目创建成功后,打开pom.xml,修改<parent>子级的<version>节点的值即可。

当项目创建成功后,在src/main/java下默认就存在一个包,是由创建项目时填写的Package决定的,就是当前项目组件扫描的包,相当于默认就有了@ComponentScan("cn.tedu.boot.demo")

项目中默认就存在BootDemoApplication类,此类的名称是由创建项目时填写的Artifact Id加上Application单词组成的,这个类名称是可以改的,这个类中有main()方法,执行此方法就会启动整个项目,将加载项目中所有依赖所需的环境。

src/main/resources下默认存在application.properties配置文件,它是项目默认会加载的配置文件。另外,Spring Boot的自动配置机制要求此处的许多配置是使用固定的属性名的!

3. 当前案例目标

客户端发出请求,最终增加管理员信息。

4. 开发数据访问层

4.1. 添加Mybatis相关依赖项

pom.xml中添加必要的依赖项:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

4.2. 配置连接数据库的信息

当添加以上依赖项,如果启动项目(执行BootDemoApplication类中的main()方法)会报告错误,因为Spring Boot允许自动配置,当添加以上依赖项后,就会自动读取连接数据库的相关信息,并自动配置数据源,甚至Mybatis所需要其它基础配置,而目前并没有配置连接数据库的相关信息,所以出现错误!

则在application.properties中添加配置:

spring.datasource.url=jdbc:mysql://localhost:3306/mall_ams?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

完成后,在src/test/java下找到默认即存在的测试类,在此测试类中尝试获取数据库连接对象:

@SpringBootTest
class BootDemoApplicationTests {
   

    @Autowired
    DataSource dataSource;

    @Test
    void contextLoads() throws Exception {
   
        System.out.println(dataSource.getConnection());
    }

}

如果能顺利执行此测试,则表示以上配置是正确的!

4.3. 创建与数据表对应的实体类

为了简化编写POJO类,通常会在项目中添加Lombok依赖:

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

提示:当使用了Lombok后,应该在开发工具中安装Lombok插件,否则,在编写代码时,所有相关的Setters & Getters都没有自动提示,也会报告语法错误,但是不影响运行。

在插入数据时,需要使用实体类封装即将插入到表中的多个数据,则在cn.tedu.boot.demo包下创建entity子包,并在其下创建Admin类:

@Data
public class Admin implements Serializable {
   
    
    private Long id;
    private String username;
    private String password;
    private String nickname;
    private String avatar;
    private String phone;
    private String email;
    private String description;
    private Integer isEnable;
    private String lastLoginIp;
    private Integer loginCount;
    private LocalDateTime gmtLastLogin;
    private LocalDateTime gmtCreate;
    private LocalDateTime gmtModified;
    
}

4.4. 插入管理员数据

要执行的SQL语句大致是:

insert into ams_admin (除了id以外的字段列表……) values (值列表)

则在cn.tedu.boot.demo包下创建mapper子包,并在其下创建AdminMapper接口,在接口中添加抽象方法:

package cn.tedu.boot.demo.mapper;

import cn.tedu.boot.demo.entity.Admin;
import org.springframework.stereotype.Repository;

@Repository
public interface AdminMapper {
   

    int insert(Admin admin);

}

还需要进行配置,使得Mybatis知道这些接口文件在哪里!则在cn.tedu.boot.demo下创建config包,并在此包下创建MybatisConfiguration类,通过@MapperScan配置接口文件所在的包:

package cn.tedu.boot.demo.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("cn.tedu.boot.demo.mapper")
public class MybatisConfiguration {
   
}

提示:关于@MapperScan注解,还可以配置在项目的启动类上(BootDemoApplication),因为启动类上有@SpringBootApplication注解,其元注解中有@SpringBootConfiguration,其元注解中有@Configuration,所以,启动类本身也是配置类!但是,如果项目中的配置较多,不建议全部写在启动类中,所以,可以分为多个配置类,独立配置。

接下来,在src/main/resources下创建mapper文件夹,并从前序项目中复制粘贴得到AdminMapper.xml文件(删除原文件中已经配置的SQL等代码),然后,在此文件中配置抽象方法映射的SQL:

<?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="cn.tedu.boot.demo.mapper.AdminMapper">

    <!-- int insert(Admin admin); -->
    <insert id="insert" useGeneratedKeys
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值