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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 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

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
Java 数据库连接 数据库
spring复习05,spring整合mybatis,声明式事务
这篇文章详细介绍了如何在Spring框架中整合MyBatis以及如何配置声明式事务。主要内容包括:在Maven项目中添加依赖、创建实体类和Mapper接口、配置MyBatis核心配置文件和映射文件、配置数据源、创建sqlSessionFactory和sqlSessionTemplate、实现Mapper接口、配置声明式事务以及测试使用。此外,还解释了声明式事务的传播行为、隔离级别、只读提示和事务超时期间等概念。
spring复习05,spring整合mybatis,声明式事务
|
4天前
|
Java 数据库连接 数据库
SpringBoot 整合jdbc和mybatis
本文详细介绍了如何在SpringBoot项目中整合JDBC与MyBatis,并提供了具体的配置步骤和示例代码。首先,通过创建用户实体类和数据库表来准备基础环境;接着,配置Maven依赖、数据库连接及属性;最后,分别展示了JDBC与MyBatis的集成方法及其基本操作,包括增删查改等功能的实现。适合初学者快速入门。
SpringBoot 整合jdbc和mybatis
|
14天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1天前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
1天前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
1天前
|
XML Java 数据库连接
springboot中整合mybatis及简单使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis,包括依赖引入、配置数据源、创建测试表、编写Mapper接口和XML文件、以及创建Service和Controller层的步骤。
springboot中整合mybatis及简单使用
|
15天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
1月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
19天前
|
前端开发 JavaScript Java
技术分享:使用Spring Boot3.3与MyBatis-Plus联合实现多层次树结构的异步加载策略
在现代Web开发中,处理多层次树形结构数据是一项常见且重要的任务。这些结构广泛应用于分类管理、组织结构、权限管理等场景。为了提升用户体验和系统性能,采用异步加载策略来动态加载树形结构的各个层级变得尤为重要。本文将详细介绍如何使用Spring Boot3.3与MyBatis-Plus联合实现这一功能。
54 2
|
27天前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
30 1