前言
在学习springboot集成MyBatis这一段的时候难受了很长时间,跟视频教程一步一步的做,却依然会报错,在经过一个星期的纠结之后,终于能够正常运行,现将学习过程记录下来。
1 最终界面展示
1.1 最终IDEA界面展示
1.2 最终的运行界面
2 设计思路
1.初始化数据库
2.添加依赖(MyBatis、连接数据库的驱动)
3.连接数据库的配置
4.通过MyBatis逆向工程生成:数据持久层和实体bean
3 初始化数据库
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
执行完成之后会在左侧的project下生成mapper和model文件夹:
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创建接口类:
创建在service文件夹下:
为queryStudentById创建方法:
最终StudentService.java中是这个样子
接下来为StudentService创捷实体类
存放在impl文件夹下:
修改实体类中的内容为:
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注解
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的根目录中。(这一点在新创建项目的时候并不是在根目录中,原因正在寻找中·······)