前言

在学习springboot集成MyBatis这一段的时候难受了很长时间,跟视频教程一步一步的做,却依然会报错,在经过一个星期的纠结之后,终于能够正常运行,现将学习过程记录下来。

1 最终界面展示

1.1 最终IDEA界面展示

spring boot mybatis plus generator 下载 springboot+mybatis教程_spring

1.2 最终的运行界面

spring boot mybatis plus generator 下载 springboot+mybatis教程_mybatis_02

2 设计思路

1.初始化数据库
2.添加依赖(MyBatis、连接数据库的驱动)
3.连接数据库的配置
4.通过MyBatis逆向工程生成:数据持久层和实体bean

3 初始化数据库

spring boot mybatis plus generator 下载 springboot+mybatis教程_xml_03

4 添加相关依赖

4.1 添加配置文件

在根目录下创建名为GeneratorMapper.xml的文件,文件内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- 指定连接数据库的 JDBC 驱动包所在位置,指定到你本机的完整路径 -->
    <classPathEntry location="D:\JAVA\MySQL\mysql-connector-java-8.0.16.jar"/>

    <!-- 配置 table 表信息内容体,targetRuntime 指定采用 MyBatis3 的版本 -->
    <context id="tables" targetRuntime="MyBatis3">

        <!-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!-- 配置数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC"
                        userId="root"
                        password="yroot">
        </jdbcConnection>

        <!-- 生成 model 类,targetPackage 指定 model 类的包名, targetProject 指定
       生成的 model 放在 eclipse 的哪个工程下面-->
        <javaModelGenerator targetPackage="com.bjpowernode.springboot.model"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
            <property name="trimStrings" value="false" />
        </javaModelGenerator>
        <!-- 生成 MyBatis 的 Mapper.xml 文件,targetPackage 指定 mapper.xml 文件的
       包名, targetProject 指定生成的 mapper.xml 放在 eclipse 的哪个工程下面 -->
        <sqlMapGenerator targetPackage="com.bjpowernode.springboot.mapper"
                         targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- 生成 MyBatis 的 Mapper 接口类文件,targetPackage 指定 Mapper 接口类的包
       名, targetProject 指定生成的 Mapper 接口放在 eclipse 的哪个工程下面 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.bjpowernode.springboot.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 数据库表名及对应的 Java 模型类名 -->
        <table tableName="t_student" domainObjectName="Student"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>

注意要在配置文件中修改自己的JDBC驱动对用的位置,以及自己数据库的登录信息。

4.2 添加依赖

在pom.xml文件中的dependencies标签中添加相关的依赖:

<!--mybatis整合springboot框架起步依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>

        <!--MySQL驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

在的标签中添加以下:

<!--mybatis 代码自动生成插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <configuration>
                    <!--配置文件的位置-->
                    <configurationFile>GeneratorMapper.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.5</version>
                    </dependency>

                    <dependency>
                        <groupId>org.mybatis</groupId>
                        <artifactId>mybatis</artifactId>
                        <version>3.4.2</version>
                    </dependency>
                </dependencies>
            </plugin>

我使用的是IDEA2020.2,目前这些配置没有版本冲突问题。

4.3 创建完成后在窗口右侧的Maven选项中执行mybatis-generator:generate

spring boot mybatis plus generator 下载 springboot+mybatis教程_java_04


执行完成之后会在左侧的project下生成mapper和model文件夹:

spring boot mybatis plus generator 下载 springboot+mybatis教程_mybatis_05

5 连接数据库的配置

在application.properties配置文件中进行连接数据库的配置:

# 应用服务 WEB 访问端口
server.port=8080
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=yroot

注意修改自己的数据库登录信息。

6 通过MyBatis逆向工程生成:数据持久层和实体bean

6.1 首先创造controller类

在springboot的目录下创建web文件夹,然后创建studentController

package com.bjpowernode.springboot.web;

import com.bjpowernode.springboot.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class StudentController {

    @Autowired
    private StudentService studentService;

    @RequestMapping(value = "/student/detail")
    public @ResponseBody Object studentDetail(Integer id){
        Student student =studentService.queryStudentById(id);
        return student;
    }
}

然后为StudentService创建接口类:

spring boot mybatis plus generator 下载 springboot+mybatis教程_java_06


创建在service文件夹下:

spring boot mybatis plus generator 下载 springboot+mybatis教程_spring_07


为queryStudentById创建方法:

spring boot mybatis plus generator 下载 springboot+mybatis教程_mybatis_08


最终StudentService.java中是这个样子

spring boot mybatis plus generator 下载 springboot+mybatis教程_spring_09


接下来为StudentService创捷实体类

spring boot mybatis plus generator 下载 springboot+mybatis教程_mybatis_10


存放在impl文件夹下:

spring boot mybatis plus generator 下载 springboot+mybatis教程_spring_11


修改实体类中的内容为:

package com.bjpowernode.springboot.service.impl;

import com.bjpowernode.springboot.mapper.StudentMapper;
import com.bjpowernode.springboot.model.Student;
import com.bjpowernode.springboot.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public Student queryStudentById(Integer id) {
        return studentMapper.selectByPrimaryKey(id);
    }
}

在Mapper文件夹下的StudentMapper文件中增加@Mapper注解

spring boot mybatis plus generator 下载 springboot+mybatis教程_spring_12

6.3 配置pom.xml

最后一步是对pom.xml再次进行配置,在标签中增加以下内容:

<resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>

OK~运行测试!

注意

执行文件 Application要放在spring boot的根目录中。(这一点在新创建项目的时候并不是在根目录中,原因正在寻找中·······)