Mybatis使用教程之XML配置方式实现增删改查

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关


文章目录

  • 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配置方式的整个实例演示过程



📜文末寄语

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

相关推荐
Qiuner2 小时前
Spring Boot 进阶:application.properties 与 application.yml 的全方位对比与最佳实践
java·spring boot·后端
Seven972 小时前
剑指offer-38、⼆叉树的深度
java
Kapaseker2 小时前
一文入门 Java Stream
java
optimistic_chen2 小时前
【Java EE进阶 --- SpringBoot】Spring事务
java·spring boot·笔记·spring·java-ee·事务
leonardee2 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
Slow菜鸟2 小时前
Java 开发环境安装指南(一) | 目录设计规范
java
q***0562 小时前
Spring 中使用Mybatis,超详细
spring·tomcat·mybatis
BS_Li2 小时前
【Linux系统编程】进程控制
java·linux·数据库
多多*2 小时前
分布式中间件 消息队列Rocketmq 详解
java·开发语言·jvm·数据库·mysql·maven·java-rocketmq