🤟致敬读者
- 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉
📘博主相关
文章目录
- Mybatis使用教程之XML配置方式实现增删改查
-
- [1. 准备工作](#1. 准备工作)
- [2. 创建项目](#2. 创建项目)
- [3. 依赖引入](#3. 依赖引入)
- [4. application.yml配置](#4. application.yml配置)
- [5. 建表](#5. 建表)
-
- [5.1 建表语句](#5.1 建表语句)
- [5.2 打开控制台](#5.2 打开控制台)
- [5.3 执行sql](#5.3 执行sql)
- [5.4 查看表结构](#5.4 查看表结构)
- [5.5 查看表数据](#5.5 查看表数据)
- [6. 实体类](#6. 实体类)
- [7. 接口](#7. 接口)
- [8. 映射文件](#8. 映射文件)
- [9. 控制类](#9. 控制类)
- [10. 项目启动类](#10. 项目启动类)
- [11. 完整包结构](#11. 完整包结构)
- [12. 启动项目](#12. 启动项目)
- [13. 接口测试](#13. 接口测试)
-
- [13.1 新增数据](#13.1 新增数据)
- [13.2 查询数据](#13.2 查询数据)
- [13.3 修改数据](#13.3 修改数据)
- [13.4 删除数据](#13.4 删除数据)
- [14. 注意事项](#14. 注意事项)
-
- [14.1 映射文件默认位置](#14.1 映射文件默认位置)
- [14.2 sql语句不能注释](#14.2 sql语句不能注释)
📃文章前言
- 🔷文章均为学习工作中整理的笔记。
- 🔶如有错误请指正,共同学习进步。

Mybatis使用教程之XML配置方式实现增删改查
1. 准备工作
在实现功能之前,你需要先准备一个数据库,并且有连接数据库的连接参数(账号密码等)。
其次,你还需要一个开发工具,这里建议使用IDEA,可直接在工具内执行sql以及查看表数据。
如在本地起了一个mysql服务,并且账号为root密码为1234,数据库名称为xh_db,表名为t_user
(当然,关于数据库部分如有需要可参考文章:MySQL 下载、安装及配置教程(Msi安装))
以下基于springboot项目,使用xml配置的方式实现对表数据的增删改查功能
2. 创建项目
创建一个maven项目,并根据需要创建包名,创建后的项目包结构如下

主要是红框内的包名,其中annotation包和文件mybatis-config1.text可忽略
3. 依赖引入
在pom中引入所需依赖
xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加MyBatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<!-- 添加数据库驱动依赖(根据实际使用的数据库选择) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
完整pom依赖
pom.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xh</groupId>
<artifactId>java_mybatis_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>java_mybatis_demo</name>
<description>java_mybatis_demo</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>25</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加MyBatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<!-- 添加数据库驱动依赖(根据实际使用的数据库选择) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
4. application.yml配置
application.yml
yml
server:
port: 8080
spring:
application:
name: java_mybatis_demo
datasource:
username: root
password: 1234
url: jdbc:mysql://localhost:3306/xh_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull&transformed
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
# mapper-locations: classpath:src/main/java/com/xh/java_mybatis_demo/mybatis_xml/mapper/**Mapper.xml
mapper-locations: classpath:mapper/**Mapper.xml
# configuration: # 配置打印 MyBatis⽇志
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
## map-underscore-to-camel-case: true # 开启驼峰自动转换
以上数据库配置参数需根据自己的数据库服务进行修改
5. 建表
5.1 建表语句
创建表t_user,建表语句如下
sql
create table t_user(
id int primary key auto_increment,
username varchar(255) not null,
password varchar(255) not null,
email varchar(255) not null
);
5.2 打开控制台
可通过navicat等工具连接数据库查看,也可使用IDEA连接数据库查看表
参考文章:IDEA连接MySQL服务器数据库指南
打开控制台,执行上面的建表sql即可

5.3 执行sql
建表语句选中后点击绿色三角标即可执行

5.4 查看表结构
执行结束后可以看到表以及表的字段信息

5.5 查看表数据
查看数据库双击表名即可查看表数据,默认是空的,以下是填入数据后的样子

6. 实体类
包名com.xh.java_mybatis_demo.mybatis_xml.entity
类名TUser.java
java
package com.xh.java_mybatis_demo.mybatis_xml.entity;
import lombok.Data;
import org.springframework.stereotype.Component;
//@TableName("t_user")
@Data
@Component
public class TUser {
private Integer id;
private String username;
private String password;
private String email;
}
7. 接口
包名com.xh.java_mybatis_demo.mybatis_xml.mapper
类名TUserMapper.java
java
package com.xh.java_mybatis_demo.mybatis_xml.mapper;
import com.xh.java_mybatis_demo.mybatis_xml.entity.TUser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TUserMapper {
TUser selectTUserById(int id);
List<TUser> selectAllTUsers();
void insertTUser(TUser tUser);
void updateTUser(TUser tUser);
void deleteTUser(int id);
}
8. 映射文件
包名resources.mapper
文件名TUserMapper.xml
xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xh.java_mybatis_demo.mybatis_xml.mapper.TUserMapper">
<!-- 查询单个用户 -->
<select id="selectTUserById" resultType="com.xh.java_mybatis_demo.mybatis_xml.entity.TUser">
SELECT id, username, password, email FROM t_user WHERE id = #{id}
-- SELECT id, username, password, email FROM t_user WHERE id = #{id}
</select>
<!-- 查询所有用户 -->
<select id="selectAllTUsers" resultType="com.xh.java_mybatis_demo.mybatis_xml.entity.TUser">
SELECT id, username, password, email FROM t_user
</select>
<!-- 插入用户 -->
<insert id="insertTUser">
INSERT INTO t_user(username, password, email) VALUES (#{username}, #{password}, #{email})
</insert>
<!-- 更新用户 -->
<update id="updateTUser">
UPDATE t_user SET password = #{password}, email = #{email} WHERE username = #{username}
-- UPDATE t_user SET password = #{password}, email = #{email} WHERE username = #{username}
</update>
<!-- 删除用户 -->
<delete id="deleteTUser">
DELETE FROM t_user WHERE id = #{id}
</delete>
</mapper>
9. 控制类
包名com.xh.java_mybatis_demo.mybatis_xml.controller
类名TUserController.java
java
package com.xh.java_mybatis_demo.mybatis_xml.controller;
import com.xh.java_mybatis_demo.mybatis_xml.entity.TUser;
import com.xh.java_mybatis_demo.mybatis_xml.mapper.TUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/user")
public class TUserController {
@Autowired
private TUserMapper tUserMapper;
@GetMapping(value = "/getTUser")
public List<TUser> getTUser() {
//TODO
List<TUser> tUsers = tUserMapper.selectAllTUsers();
for (TUser tUser : tUsers) {
System.out.println(tUser);
}
System.out.println("测试接口-查询表中所有数据,数据个数:"+tUsers.size());
return tUsers;
}
@PostMapping(value = "/addTUser")
public void addTUser(@RequestBody TUser tUser) {
//TODO
tUserMapper.insertTUser(tUser);
}
@PutMapping(value = "/updateTUser")
public void updateTUser(@RequestBody TUser tUser) {
//TODO
// String username = tUser.getUsername();
tUserMapper.updateTUser(tUser);
}
@DeleteMapping(value = "/removeTUser")
public void removeTUser(@RequestParam("id")int id) {
//TODO
tUserMapper.deleteTUser(id);
}
}
10. 项目启动类
这个类一般会默认自动生成,如果没有可以手动创建
包名com.xh.java_mybatis_demo
类名JavaMybatisDemoApplication.java
java
package com.xh.java_mybatis_demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JavaMybatisDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JavaMybatisDemoApplication.class, args);
}
}
11. 完整包结构
项目完整包结构如下

12. 启动项目
在主类JavaMybatisDemoApplication.java右键run即可启动

13. 接口测试
工具选择:可以使用postman也可以使用apifox
需要注意的是,这里的Java对象在请求时可以直接使用json结构来请求,具体操作如下
13.1 新增数据
url
url
http://127.0.0.1:8080/user/addTUser
请求方式
POST
请求体
json
{"username":"zhangfei","password":"9999","email":"zhangfei@163.com"}
请求截图

查看表中是否有新增记录(左上角循环箭头点击刷新表记录)

13.2 查询数据
url
url
http://127.0.0.1:8080/user/getTUser
请求方式
GET
请求参数
无
请求截图

注意,右侧校验响应可以不用管,这里因为请求返回的是数组对象,正常应该返回json。
13.3 修改数据
url
url
http://127.0.0.1:8080/user/updateTUser
请求方式
PUT
请求参数
json
{"username":"zhangfei","password":"7777","email":"zhangfei@163.com"}
请求截图

查看表中记录是否被修改

13.4 删除数据
url
url
http://127.0.0.1:8080/user/removeTUser
请求方式
DELETE
请求参数
参数名id
参数值4
参数类型integer
请求截图

查看表中数据

14. 注意事项
14.1 映射文件默认位置
一般默认情况下映射文件(TUserMapper.xml)理应存放在resources文件夹下,然后在applicaiton.yml配置文件中使用mapper-locations: classpath:xxx/**Mapper.xml的配置方式指定路径读取
当不放在resources包下,则无法通过application.yml中参数指定位置读取
14.2 sql语句不能注释
TUserMapper.xml中的sql语句最好不要有注释的行,否则在调用相关sql时会报错,如下

执行时报错如下

以上就是mybatis的xml配置方式的整个实例演示过程

📜文末寄语
- 🟠关注我,解锁更多优质内容
- 🟡技术前沿 | 实战干货 | 疑难解答,持续更新中
- 🟢加入《全栈知识库》,与各领域开发者共创技术盛宴
- 🔵进入《专属社群》,技术路上结伴同行,共同成长
- 🟣点击下方名片,获取更多精彩内容👇