第四章 ORM 操作 MySQL


  • 官方下载地址

​动力节点springboot资料​


  • 视频观看地址

​https://www.bilibili.com/video/BV1XQ4y1m7ex​

讲解 MyBatis 框架, 读写 MySQL 数据。通过 SpringBoot +MyBatis 实现对数据库学生表的查询操作。

数据库参考: springboot.sql 脚本文件

创建数据库:数据库 springboot,指定数据库字符编码为 utf-8

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_02

插入数据

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_03#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_04

4.1 创建 Spring Boot 项目

项目名称: 015-springboot-mybatis

使用@Mapper 注解

➢   pom.xml

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_05#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_06 #yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_07#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_08 #yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_09#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_10

加入 resources 插件

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_11#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_12

➢   配置数据源: application.properties

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_13#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_14#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_15#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_16

➢   创建数实体 bean, dao 接口, mapper 文件

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_17#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_18

➢   实体类

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_19#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_20#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_21#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_22 

➢   创建 Dao 接口

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_23#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_24

➢   mapper 文件:

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_25#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_26#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_27#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_28 

➢   service 接口

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_29#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_30

➢   service 接口实现类

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_31#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_32

return student; 

}
}

➢   controller 类

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_33#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_34

启动 Application 类, 浏览器访问http://localhost:9090/myboot/query

4.2 @MapperScan

在 Dao 接口上面加入@Mapper, 需要在每个接口都加入注解。 当 Dao 接口多的时候不方便。

可以使用如下的方式解决。

主类上添加注解包扫描: @MapperScan("com.bjpowernode.dao")

新建 Spring Boot 项目 : 016-springboot-mybatis2

项目的代码同上面的程序,修改的位置:

1.去掉 StudentMapper 接口的上面的@Mapper 注解

2.在主类上面加入 @MapperScan()

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_35#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_36

4.3 mapper 文件和 java 代码分开管理

这种方式比较推荐, mapper 文件放在 resources 目录下, java 代码放在 src/main/java。

实现步骤:

➢   在resources 创建自定义目录,例如mapper, 存放 xml 文件

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_37#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_38

➢   把原来的 xml 文件剪切并拷贝到 resources/mapper 目录

➢   在application.properties配置文件中指定映射文件的位置, 这个配置只有接口和映 射文件不在同一个包的情况下,才需要指定。

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_Java_39#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_40

➢  运行主类,  浏览器测试访问

4.4 事务支持

Spring Boot 使用事务非常简单,底层依然采用的是 Spring 本身提供的事务管理

➢    在入口类中使用注解 @EnableTransactionManagement 开启事务支持

➢    在访问数据库的 Service 方法上添加注解 @Transactional 即可

通过 SpringBoot +MyBatis 实现对数据库学生表的更新操作,在 service 层的方法中构建 异常,查看事务是否生效。

创建项目: 018-springboot-transaction

项目可以在 MyBatis 项目中修改。

实现步骤:

1. pom.xml

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_41#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_42#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_43#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_44

2. 修改 StudentService,在 addStudent()方法中抛出异常

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_xml_45#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_46​ #yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_数据库_47#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_48

3. 在 Application 主类上, @EnableTransactionManagement 开启事务支持 @EnableTransactionManagement 可选,但是@Service 必须添加事务才生效

#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_springboot_49#yyds干货盘点#动力节点王鹤Springboot教程笔记(四)ORM操作MySQL_spring_50

4. 测试应用,  数据没有添加成功

5. 注释掉 StudentServiceImpl 上的@Transactional 测试。数据添加成功