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

简介: 快速学习 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

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
9月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2196 1
|
9月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
498 0
|
6月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1152 1
Spring boot 使用mybatis generator 自动生成代码插件
|
6月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
279 1
|
7月前
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`&lt;if&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`&lt;sql&gt;`和`&lt;include&gt;`实现代码复用,优化维护效率。
683 5
|
9月前
|
XML Java 数据库连接
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
311 21
|
9月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
748 0
|
9月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
1270 0
|
11月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
543 2
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
628 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。