栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring学习-MyBatis及项目实战

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring学习-MyBatis及项目实战

一.MySQL准备

这里先做一些准备,让 Java 后台能够连接到 MySQL 数据库上。

1.创建数据库

方法1:通过 MySQL 官方自带的 MySQLWorkbench 来创建新 MySQL Schema

方法2:通过 DDL SQL的方式创建新 MySQL Schema

CREATE SCHEMA `test_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
2.创建数据表

方法1:通过 MySQL 官方自带的 MySQLWorkbench 来创建新 MySQL Table

方法2:通过 DDL SQL 的方式创建新 MySQL Table

CREATE TABLE `user` (
    `id` bigint(64) NOT NULL AUTO_INCREMENT,
    `name` varchar(20) DEFAULT NULL,
    `birthday` datetime NOT NULL,
    `gender` tinyint(1) DEFAULT NULL,
    PRIMARY KEY(`id`),
    UNIQUE KEY `UK_NAME` (`name`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
3.连接JDBC

DB 部分配置好了之后,接下来我们在 SpringBoot 的配置文件中通过 JDBC 和 MySQL连接起来

Step1:在 Maven 中引入 MySQL JDBC

Step2:配置 DB 连接属性

另外还引入了 lombok 库,便于在编写 Java 模型的时候通过 @Data 注解省略冗长的 getter 和 setter 等代码

 

 注意:默认情况下,@Data 是不会调用父类的 toString(),equals(),hashCode()方法的,需要手动添加对应的注解并设置 callSuper = true。

二.JdbcTemplate相关使用 1.简单的对象查询

2.简单的对象创建

3.简单的对象更新

4.简单的对象删除

三.Spring MyBatis 架构

四.环境预备 1. 为了便于更好的开发体验,建议在 IDEA 中添加 MyBatis 的相关插件

Step1:打开 IDEA 配置,在 Plugins 标签下面搜索

Step2:安装一款比较顺序的 MyBatis 插件(top 3 功能差不多),具体可以查看功能说明

根据 user 表和 UserDO 的结构补齐 xml 中的基础部分

2.在 application.properties 文件增加 MyBatis 相关配置
  • mapper-locations:自动扫描 SQL Mapper 文件的路径
  • log-impl:默认的日志输出,便于后续 Debug 生成的 SQL 语句(这里配置输出到控制台,便于学习用)

3.接下来到了 MyBatis 的重点:XML 风格的 SQL 语句编写

五.MyBatis - 查询对象 1.编写单对象查询语句

2.插件功能:在 Java Mapper 和 XML Mapper 之间关联校验和快速跳转

3.同时补齐其他相关的层的相关代码,通过三层架构来透出我们从 DB 中查到数据

4.启动服务,通过浏览器访问接口

六.MyBatis - 创建对象 1.编写单对象创建逻辑

在 Mapper XML 中加入 insert 节点

2.同时补齐其他相关的层的相关代码,通过三层架构来实现从 API 到 DB 的逻辑落地

3.为了测试创建对象的接口,通过浏览器便于创建 POST 请求体,这里介绍两种新的方案 方案一:在后台系统集成 Swagger 框架

集成 Swagger - Spring Starter 方法集成

集成 Swagger - 启动项

方案二:使用 Postman

安装方式

  • 通过 Chrome 插件进行安装
  • 独立安装(推荐)

安装完成之后打开 Postman 界面,通过手工填入 Post 的地址,请求体等并发送请求来测试服务

4.为了让整个创建逻辑更加符合实际业务需求,我们需要使用 MyBatis 的 useGeneratedKeys 功能

通过 Postman 测试返回的自增 ID 值

  • 插入后,我们返回了创建时传入的 UserDO 对象的 id
  • 通过返回值验证,我们可以获得插入的对象的 id 雀食是 DB 中的自增 ID
  • 在控制台中可以看到我们生成的事务,SQL 和参数情况 
七.MyBatis - 更新对象  1.编写单对象更新的逻辑

2.编写单对象更新的逻辑

3.同时补齐其他相关的层的相关代码,通过三层架构来实现从 API 到 DB 的逻辑落地

 

4.通过接口测试

八.MyBatis - 删除对象 1.正常的业务使用 DB 的删除操作是很少的,一般会使用“软删除”,即不实际删除数据,而是通过字段标记为“已删除”,从而避免数据损失。接下来就通过改造的方法让 User 支持软删除。

2.支持软删除

3.软删除还需要针对查询和更新进行修改,避免查出或者更新已删除的对象

九.MyBatis - 综合项目实战

前面我们将讲完了 MyBatis 的单对象操作,接下来进行综合实战,来实现 MyBatis 的一些进阶批量对象操作。

1.相关功能介绍

批量查询(搜索):在实际的业务系统中,涉及到批量查询的都离不开如下功能:

  • 过滤:按照指定的查询条件(关键字,日期,状态,类型等)过滤出目标列表
  • 分页:按照指定的页面和每页对象数量截取全列表的一部分
  • 排序:按照指定的(多个)字段和排序方向展示对象列表

我们可以用如下 SQL 示例表示:

2.批量查询(搜索)模型:构建请求体和返回题(简化版)

3.批量查询(搜索)模型:请求体子节点

4.批量查询(搜索)服务 4.1 调整 UserMapper.java,新增两个查询方法

4.2 在 UserMapper.xml 增加 countAll 查询
  • 针对大小判断的条件,需要通过 XML 的 CDATA 标签来避免大小于符号的转义
  • foreach 节点是 MyBatis 提供的循环输出的辅助方法,可以将集合循环输出为 SQL 语句
  • #{param}是安全传参,没有 SQL 注入等安全问题,${param}是字符串拼接,存在安全问题,能用 #{param}就不要使用 ${param},除非在某些情况下不生效

 

4.3 在 UserMapper.xml 增加 searchAll 查询
  • 相比 countAll,searchAll 需要增加对排序和分页条件的处理,分别对应的 SQL 为 limit 和 order by 子句
  • order by 子句不能使用 #{} 进行安全传参,limit 可以使用 #{} 进行安全传参
  • order by 子句中的参数需要在后台经过安全检查,不能直接使用前端的传参,否则可能存在注入风险

 

5.同时补齐其他相关的层的相关代码,通过三层架构来实现从 API 到 DB 的逻辑落地

6.批量查询(搜索)测试:通过 Postman 进行测试

 

 本文章整理自上课PPT,仅供学习使用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862198.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号