0. 开发环境
- IDE:IntelliJ IDEA 2017.1 x64
- jdk:1.8.0_91
- Spring Boot:2.1.1.RELEASE
- Maven:3.3.9
- MySQL:5.7.13
1. 引入依赖
<dependency>
这里,如果使用的 MySQL 是 8.X版本的话,mysql-connector-java 版本必须是 8.0以上,否则会报错:
java
2. 引入数据源
这里根据个人习惯使用 properties 或 yml 文件配置,本项目使用的是更为简洁的 yml 配置文件。
删除原来的 application.properties ,新建 application.yml。
application.yml 增加如下配置信息
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
这里,如果使用的 mysql-connector-java 是5.X版本的话,driver-class-name 可以直接省略使用默认,或者配置为 com.mysql.jdbc.Driver
到这里,Spring Boot就可以访问数据库了,我们来做下测试。
3. 测试
3.1 新建数据库表
CREATE
3.2 创建实体
package
3.3 DAO层
package
3.4 Service层
package
这里使用 @Autowired 自动装配TestMapper时会有报错,原因是TestMapper使用了@Mapper注解,idea不能把@Mapper注解的TestMapper识别为Bean,但实际运行时@Mapper会被Spring识别为Bean,自动装配不会出错。所以这里的报错可以不用在意。但如果看着代码中有报错很不顺眼,可以在TestMapper类增加@Repository注解,标注该类为DAO组件。
3.5 Controller层
package
3.6 测试
使用Postman进行测试,输出结果如下
3.6.1 select
3.6.2 insert
Postman接收到输出为1,表示成功,我们去查下数据库
数据成功插入。
4. MyBatis映射文件
以上,我们访问数据库时,SQL语句还是写死在代码里面,处理起来并没有很方便。通常,我们把SQL语句与代码分离,使用MyBatis映射文件方式来访问数据库。
4.1 MyBatis配置
我们在resources文件夹下新建mapper文件夹,用于存放MyBatis映射文件
application.yml 增加MyBatis配置信息
mybatis:
mapper-locations: classpath:mapper/*.xml #对应mapper映射xml文件所在路径
type-aliases-package: cn.wbnull.springbootdemo.model #对应实体类路径
完整配置如下,注意spring与mybatis都是根节点
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
#
mybatis:
mapper-locations: classpath:mapper/*.xml #对应mapper映射xml文件所在路径
type-aliases-package: cn.wbnull.springbootdemo.model #对应实体类路径
4.2 DAO层
我们创建一个新的DAO类
package
4.3 创建MyBatis映射文件
resources/mapper下新建映射文件 TestMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
这里着重注意这几点
这里着重注意这几点
1、<mapper namespace="cn.wbnull.springbootdemo.dao.TestMapperV2"> namespace 一定要对应自己dao包所在的包路径,对应我们需要匹配的dao层类
2、<resultMap id="BaseResultMap" type="cn.wbnull.springbootdemo.model.TestModel"> type 一定要对应我们需要匹配的实体类
3、 <id column="id" property="id" jdbcType="INTEGER"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
对应数据库表的字段
4、<select id="select" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from test
</select>
<select> 表示这是一条查询语句, id="select"一定要与dao层需要匹配的方法名一致,resultMap 表示对应的返回值类型
5、<insert id="insert" parameterType="cn.wbnull.springbootdemo.model.TestModel"> parameterType表示对应的输入参数类型
4.4 Service层
创建一个新的Service类
package
4.5 Controller层
创建一个新的Controller类
package
4.6 项目启动类
增加@MapperScan("cn.wbnull.springbootdemo.dao"),对应DAO层的包名
package
4.7 测试
4.7.1 select
4.7.2 insert
Postman接收到输出为1,表示成功,我们去查下数据库
数据成功插入
截至这里,Spring Boot已成功整合MyBatis并连接上了数据库,且测试正常。
但我们实际开发过程中,如果存在大量数据库表,那我们就需要创建大量的实体类、DAO层、映射文件,工作量较大。我们使用mybatis generator来自动生成代码。
5. Generator
5.1 新建数据库表
我们先新建一个数据库表,便于一会自动生成代码使用
CREATE
5.2 Generator配置文件
在resources文件夹下新建generator文件夹,generator下新建generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
5.3 引入依赖
<plugin>
5.4 Generator配置
1、Run --> Edit Configurations...
2、增加Maven配置
3、增加Generator配置 (mybatis-generator:generate -e),OK
4、运行
生成代码如下。这里我们运行成功后,同一个表,不要运行多次,否则mapper映射文件中会生成多次的代码。
package
<?xml version="1.0" encoding="UTF-8" ?>
5.5 测试
5.5.1 Service层
package
5.5.1 Controller层
package
5.5.2 insert
Postman接收到输出为1,表示成功,我们去查下数据库
数据成功插入
这样,对于大量的数据库表,我们就可以使用Generator来生成基本的代码,然后自己再添加其他所需要的代码即可。
GitHub:
dkbnull/SpringBootDemogithub.comCSDN:
https://blog.csdn.net/dkbnull/article/details/87278817blog.csdn.net微信:
Spring Boot实战:整合MyBatis连接数据库mp.weixin.qq.com微博:
https://weibo.com/ttarticle/p/show?id=2309404339889012367676weibo.com