SpringBoot 整合 Mybatis(xml 方式)|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 SpringBoot 整合 Mybatis(xml 方式)

开发者学堂课程【SpringBoot 实战教程 SpringBoot 整合 Mybatis(xml 方式)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10799


SpringBoot 整合 Mybatis(xml 方式)


1、使用 xml 文件方式整合 mybatis需要做相关 jar 包的依赖首先创建一个工程整合web这是和 mybatis 相关依赖用的数据库是 mysql所以要把 mysql 的jar包也进行依赖使用阿里的 druid 连接池在案例中写一个分页的功能再用一个 mybatis 的分页插件pagehelper 对应的依赖

<!--springboot 整合 mybatis-->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.3.1</version>

</dependency>

<!--MySQL-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<!--alibaba 的 druid 数据库连接池-->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid-spring-boot-starter</artifactId>

<version>1.1.0</version>

</dependency>

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.0.11</version>

</dependency>

<!--分页插件-->

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper-spring-boot-starter</artifactId>

<version>1.1.2</version>

</dependency>

这就是用到的相关的依赖

2、既然整合 mybatis必然要操作数据库首先确定要操作的数据库还是db1,操作用户表有 idnamepasswordemailbirthday 五个字段首先做准备工作因为整合 mybatis先用xml配置文件的方式所以先创建 mybatis 的配置文件配置文件放在 resources创建一个文件夹命名为 mybatis

3、mybatis 配置文件放在 mybatis 文件夹下命名为 mybatis-config.xml

4、把以下代码拷贝到 mybatis-config.xm 配置文件中

Mybatis 配置文件:

<?Xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEconfiguration

PUBLIC"-//mybatis.org//DTDConfig3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

</configuration>

5、配置数据源配置连接池配置 Mybatis 以及配置分页插件这些都在全局配置文件中配置创建全局配置文件命名为 application.yml使用 yml 格式

6、配置 druid 接池以下是它的写法下面都是为了提升连接池性能相关的属性上面是驱动用户名密码urldb1数据库指明 alibaba 的 druid 连接池对应的数据源的 class这是关于数据源属性的配置

spring:

datasource:

name:test

url:jdbc:mysql://127.0.0.1:3306/db1

username:root

password:root

type:com.alibaba.druid.pool.DruidDataSource

driver-class-name:com.mysql.jdbc.Driver

filters:stat

maxActive:20

initialSize:1

maxWait:60000

minIdle:1

timeBetweenEvictionRunsMillis:60000

minEvictableIdleTimeMillis:300000

validationQuery:select'x'

testWhileIdle:true

testOnBorrow:false

testOnReturn:false

poolPreparedStatements:true

maxOpenPreparedStatements:20

7、要操作 db1数据库中 users 表通常需要使用逆向工程生成对应的pojo以及 mapper已经创建好对应用户表的 pojo 以及对应它的 mapper直接用即可创建包命名为 com.db1.pojo它是逆向工程生成的所以有对应的 examplemapper 的包名叫 com.db1.mapper

8、逆向生成有一个 mapper 的接口还有一个 mapper 对应的映射文件就是 xml 配置文件在 springboot 里面整合mybatis需要把 usersmapper.xml 配置文件放在 resources 下创建一个文件夹方便区分命名为 mapping只需要留接口即可把之前的配置文件删除

9、已经准备好 pojomapper 接口以及 mapper 映射文件和 mybatis 配置文件mybatis 相关的配置比如让 springboot 知道 mapper.xml 在这里mybatis 配置文件在这里这些需要在全局配置文件中进行配置

image.png 

10、把以下代码拷贝到 application 中告诉 springboot Mybatis 配置文件在哪放在 resources 下 mybatis 下的 mybatis-config.xml把 mapping 映射文件放在 mybatis

配置文件

Mybatis 的配置:

mybatis:

mapper-locations:classpath:mapping/UsersMapper.xml

#type-aliases-package:com.db1.pojo如果用别名就用这个属性如果不使用别名可以删除

config-location:classpath:mybatis/mybatis-config.xml

11、分页插件也进行配置使用的是 PageHelper这是对应 Helper 的属性配置这里面指明了方言对应的是 mysql 数据库报错是因为有空格删除即可此时准备工作就已经完成

PageHelper 分页插件:

pagehelper:

helperDialect:mysql

reasonable:true

supportMethodsArguments:true

params:count=countSql

12、具体的功能mapper 用的是逆向工程生成的相当于第o层已经生成了一部分基本的增删改查功能下面从 service 开始写首先创建一个包命名为 com.qianteng.service

13、再创建一个接口命名为 UsersService

14、写两个功能第一个功能是添加用户第二个功能是分页查找用户分页查找因为已经配置了 pagehelper所以可以借助 pagehelper 实现用户的分页查找要知道当前是第几页以及每一页显示多少条记录所以两个参数分别是 page 和 rows

package com. qianfeng. service;

import java.util .List;

import com.db1 .pojo.Users;

public interface UsersService {

/ /添加用户

void addUser (Users user) ;

//分页查找用户

List<Users> findUsers (int page, introws) ;

}

15、写 service 实现类命名为 UsersServicelmpl.java 添加接口 usersservice

16、首先加入 service 注解实现两个功能service 实现用户的添加以及用户的查找必然要调用 mapper因为要操作的是一张表在逆向生成的 mapper 中这些功能都是存在的首先注入 usersmapper实现用户添加直接用逆向工程中生成的 insert 功能即可

@Autowired

private UsersMapper usersMapper ;

@Override

public void addUser (Users user) {

usersMapper. insert (user) ;

}

@Override

public List<Users> findUsers (int page, introws){

/ / TODO Auto-generated method stub

return null ;

}

17、分页查找查找当前页上需要展示的用户借助于 pagehelperpagehelper 的原理是只需要做查询所有pagehelper 相当于一个拦截器把当前页 rows 告诉它查出来的就是当前页了借助逆向工程里 selectByExample这时相当于无条件查询需要构造 User sExample这也是逆向生成的只要 Example 不给它配置条件就相当于是查询所有返回的是 users 集合在查询所有之前使用 pagehelper.startPage,这时查询的就是当前页上的记录最后返回集合

private UsersMapper usersMapper;

@Override

public void addUser (Users user) {

usersMapper. insert (user) ;

}

@Override

public List<Users> findUsers (int page,int rows) {

UsersExample example = newUsers Example () ;

PageHelper. startPage (page ,rows )

List<Users> users = user sMapper . selectByExample (example) ;

return users;

}

这就是这两个功能的实现

18、创建命名为 UsersController加入注解因为有两个功能所以写两个方法第一个是用户添加进行 service 注入。Saveusers 可以接收页面上要添加的用户信息构建 users 对象返回一个字符串返回 success

package com. qianfeng . controller;

import org . springframework. stereotype . Controller;

import com. qianfeng. service.UsersService;

@Controller

public class usersController {

@Autowired

private UsersService usersService ;

@RequestMapping("/ saveUser")

@ResponseBody

public String saveUsers () {

Usersuser = newUsers () ;

user . setName ("小红") ;

user . setPassword("7777") ;

user . setEmail ("xiaohong@163. com") ;

user . setBirthday (new Date() ) ;

usersService . addUser (user) ;

Return"success" ;

}

19、分页需要接收 page 和 rows接收到的两个值都要赋给相应的 page 和 rows需要使用注解 PathVariable最后返回的是查询页的用户让它以阶层格式返回加上 ResponseBody调用 usersService . findUsers

@RequestMapping("/ findUsers/ (page)/ (rows)")

@ResponseBody

public List<Users> findUsers (@PathVariable int page, @PathVariableintrows){

return usersService. findUsers (page, rows) ;

}

20、启动类涉及到 service涉及到 controller还涉及到 mapper最好要考虑mapper 对象的创建controller 对象的创建service 对象的创建进行扫描service 和 controller 共同的包是 com.qianfeng,它就会扫描到 service 和 controller因为它会扫描下面的子包mapper 需要单独扫描需要使用注解 mapperscan指明 mapper 所在的包 com. db1. mapper

21、启动添加了一个小红访问路径是 saveuser返回的是 success 字符串说明添加成功

image.png

22、在表里面可以看到小红7777。

image.png

23、分页功能的路径是 findusers需要 page 和 rows输入 localhost:8080/findUsers/1/3可以看到返回了三个用户第一个是 zhangsan第二个是 lisi第三个是 wangwu在表格中看前三个也是 zhangsanlisiwangwu

image.png

 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
SQL JavaScript Java
Spring Boot 3 整合 Mybatis-Plus 实现数据权限控制
本文介绍了如何在Spring Boot 3中整合MyBatis-Plus实现数据权限控制,通过使用MyBatis-Plus提供的`DataPermissionInterceptor`插件,在不破坏原有代码结构的基础上实现了细粒度的数据访问控制。文中详细描述了自定义注解`DataScope`的使用方法、`DataPermissionHandler`的具体实现逻辑,以及根据用户的不同角色和部门动态添加SQL片段来限制查询结果。此外,还展示了基于Spring Boot 3和Vue 3构建的前后端分离快速开发框架的实际应用案例,包括项目的核心功能模块如用户管理、角色管理等,并提供Gitee上的开源仓库
34 11
|
1月前
|
缓存 Java 数据库连接
深入探讨:Spring与MyBatis中的连接池与缓存机制
Spring 与 MyBatis 提供了强大的连接池和缓存机制,通过合理配置和使用这些机制,可以显著提升应用的性能和可扩展性。连接池通过复用数据库连接减少了连接创建和销毁的开销,而 MyBatis 的一级缓存和二级缓存则通过缓存查询结果减少了数据库访问次数。在实际应用中,结合具体的业务需求和系统架构,优化连接池和缓存的配置,是提升系统性能的重要手段。
70 4
|
1月前
|
SQL Java 数据库连接
spring和Mybatis的各种查询
Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。通过以上各种查询操作的详细讲解,我们可以看到 MyBatis 在处理简单查询、条件查询、分页查询、联合查询和动态 SQL 查询方面的强大功能。熟练掌握这些操作,可以极大提升开发效率和代码质量。
82 3
|
2月前
|
Java 数据库连接 数据库
spring和Mybatis的逆向工程
通过本文的介绍,我们了解了如何使用Spring和MyBatis进行逆向工程,包括环境配置、MyBatis Generator配置、Spring和MyBatis整合以及业务逻辑的编写。逆向工程极大地提高了开发效率,减少了重复劳动,保证了代码的一致性和可维护性。希望这篇文章能帮助你在项目中高效地使用Spring和MyBatis。
42 1
|
3月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
168 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
3月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
505 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
103 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
3月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
701 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
3月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
385 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
3月前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
45 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
下一篇
开通oss服务