学科分类
目录
Spring Boot开发

基础环境搭建

因为Spring Boot框架开发的便利性,所以实现Spring Boot与数据访问层框架(例如MyBatis)的整合非常简单,主要是引入对应的依赖启动器,并进行数据库相关参数设置即可。下面,通过具体的步骤,先以Spring Boot整合关系型数据库MySQL使用的MyBatis框架为例讲解基础环境搭建。

1.数据准备

在MySQL中,创建一个名为springbootdata的数据库,在该数据库中创建两个表t_article和t_comment,并预先插入几条测试数据,SQL语句如文件1所示。

文件1 springbootdata.sql

 1    # 创建数据库
 2    CREATE DATABASE springbootdata;
 3    # 选择使用数据库
 4    USE springbootdata;
 5    # 创建表t_article并插入相关数据
 6    DROP TABLE IF EXISTS `t_article`;
 7    CREATE TABLE `t_article` (
 8      `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '文章id',
 9      `title` varchar(200) DEFAULT NULL COMMENT '文章标题',
 10      `content` longtext COMMENT '文章内容',
 11      PRIMARY KEY (`id`)
 12    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 13    INSERT INTO `t_article` VALUES ('1', 'Spring Boot基础入门', '从入门到精通讲解...');
 14    INSERT INTO `t_article` VALUES ('2', 'Spring Cloud基础入门', '从入门到精通讲解...');
 15    # 创建表t_comment并插入相关数据
 16    DROP TABLE IF EXISTS `t_comment`;
 17    CREATE TABLE `t_comment` (
 18      `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '评论id',
 19      `content` longtext COMMENT '评论内容',
 20      `author` varchar(200) DEFAULT NULL COMMENT '评论作者',
 21      `a_id` int(20) DEFAULT NULL COMMENT '关联的文章id',
 22      PRIMARY KEY (`id`)
 23    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
 24    INSERT INTO `t_comment` VALUES ('1', '很全、很详细', '狂奔的蜗牛', '1');
 25    INSERT INTO `t_comment` VALUES ('2', '赞一个', 'tom', '1');
 26    INSERT INTO `t_comment` VALUES ('3', '很详细', 'kitty', '1');
 27    INSERT INTO `t_comment` VALUES ('4', '很好,非常详细', '张三', '1');
 28    INSERT INTO `t_comment` VALUES ('5', '很不错', '张杨', '2');

文件1中,先创建了一个数据库springbootdata,然后创建了两个表t_article和t_comment并向表中插入数据。其中评论表t_comment的a_id与文章表t_article的主键id相关联。

2.创建项目,引入相应的启动器

(1)创建Spring Boot项目。创建一个名为chapter03的Spring Boot项目,在Dependencies依赖中选择SQL模块中的MySQL和MyBatis依赖,并根据后续提示完成项目创建。其中,项目依赖选择效果如图1所示。

图1 Spring Boot整合MyBatis项目依赖选择

在图1选择的功能模块启动器中,MySQL是为了提供MySQL数据库连接驱动,MyBatis则是为了提供MyBatis框架来操作数据库。

(3)编写数据库表对应的实体类。在chapter03项目中创建名为com.itheima.domain的包,并在该包中编写与数据库表t_comment和t_article对应的实体类Comment和Article,内容分别如文件2和3所示。

文件2 Comment.java

 1    public class Comment {
 2        private Integer id;
 3        private String content;
 4        private String author;
 5        private Integer aId;
 6        // 省略属性getXX()和setXX()方法
 7        // 省略toString()方法
 8    }

文件3 Article.java

 1    import java.util.List;
 2    public class Article {
 3        private Integer id;
 4        private String title;
 5        private String content;
 6        private List<Comment> commentList;
 7        // 省略属性getXX()和setXX()方法
 8        // 省略toString()方法
 9    }

文件2和3中,实体类Comment和Article中的属性分别对应的是数据库表t_comment和t_article的字段,同时还封装了实体类属性的getXX()和setXX()方法。

3.编写配置文件

(1)在application.properties配置文件中进行数据库连接配置。打开全局配置文件application.properties,在配置文件中编写对应的MySQL数据库连接配置,内容如文件4所示。

文件4 application.properties

 1    # MySQL数据库连接配置
 2    spring.datasource.url=jdbc:mysql://localhost:3306/springbootdata?serverTimezone=UTC
 3    spring.datasource.username=root
 4    spring.datasource.password=root

文件4中,编写了连接本地MySQL数据库springbootdata的相关配置,其中默认连接数据库的用户名和密码均为root。

(2)数据源类型选择配置。Spring Boot 1.x版本默认使用的是tomcat.jdbc数据源,Spring Boot 2.x版本默认使用的是hikari数据源。如果使用其他数据源,还需要进行额外配置。

这里选择使用阿里巴巴的Druid数据源。在pom.xml文件中添加Druid数据源的依赖启动器,示例代码如下。

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

上述引入的依赖druid-spring-boot-starter,同样是阿里巴巴为了迎合Spring Boot项目而适配的Druid数据源启动器,当在pom.xml文件中引入该启动器后,不需要再进行其他额外配置,Spring Boot项目会自动识别配置Druid数据源。

需要说明的是,上述配置的Druid数据源启动器内部已经初始化了一些运行参数(例如initialSize、maxActive等),如果开发过程中,需要对这些第三方Druid的运行参数进行重新设置,必须在application.properties配置文件中进行默认参数覆盖。修改后的内容如文件5所示。

文件5 application.properties

 1    # MySQL数据库连接配置
 2    spring.datasource.url=jdbc:mysql://localhost:3306/springbootdata?serverTimezone=UTC
 3    spring.datasource.username = root
 4    spring.datasource.password = root
 5    #添加并配置第三方数据源druid
 6    spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
 7    spring.datasource.initialSize=20
 8    spring.datasource.minIdle=10
 9    spring.datasource.maxActive=100

文件5中,对数据源类型、初始化连接数、最小空闲数和最大连接数进行了属性值覆盖,如果有其他生产需求,还可以参考Druid属性设置更多参数。

在application.properties配置文件中添加上述配置后,会发现配置的initialSize、minIdle和maxActive属性底纹为黄色(IDEA开发工具中的显示色),这是因为在Spring Boot提供的数据源自动配置类org.springframework.boot.autoconfigure.jdbc.DataSourceProperties中,没有与这些参数对应的默认属性,所以这些设置的属性值无法识别和生效。为此,还需要编写一个自定义配置类,将配置文件中的属性注入到Druid数据源属性中。

在chapter03项目中创建名为com.itheima.config的包,并在该包下创建一个自定义配置类对Druid数据源属性值进行注入,内容如文件6所示。

文件6 DataSourceConfig.java

 1    import com.alibaba.druid.pool.DruidDataSource;
 2    import org.springframework.boot.context.properties.ConfigurationProperties;
 3    import org.springframework.context.annotation.Bean;
 4    import org.springframework.context.annotation.Configuration;
 5    import javax.sql.DataSource;
 6    @Configuration
 7    public class DataSourceConfig {
 8        @Bean
 9        @ConfigurationProperties(prefix = "spring.datasource")
 10        public DataSource getDruid(){
 11            return new DruidDataSource();
 12        }
 13    }

在文件6中,通过@Configuration注解标识了一个自定义配置类DataSourceConfig,在该配置类中通过@Bean注解注入了一个DataSource实例对象,@ConfigurationProperties(prefix = "spring.datasource")注解的作用是将全局配置文件中以spring.datasource开头的属性值注入到getDruid()方法返回的DataSource类对象属性中,这样就可以完成第三方数据源参数值的注入。

小提示:

上述编写配置文件的第(2)步中,数据源类型选择配置在本教材中不用配置也是可以完成案例演示的,但是为了更贴近实际开发需求,所以更完善地讲解了在Spring Boot中数据源配置的具体操作。

另外,在pom.xml中添加第三方数据源druid依赖时,本书直接选了适配Spring Boot开发的druid启动器druid-spring-boot-starter,所以可以不需要再进行其他配置,项目就会自动识别该数据源。而有些读者可能会使用独立的druid依赖文件,这时就必须在全局配置文件中额外添加“spring.datasource.type = com.alibaba.druid.pool.DruidDataSource”配置,这样项目才会识别配置的druid数据源。

点击此处
隐藏目录