前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot(09):轻松驾驭MySQL!使用MyBatis的XML配置方式完成CRUD操作(附源码)

Spring Boot(09):轻松驾驭MySQL!使用MyBatis的XML配置方式完成CRUD操作(附源码)

作者头像
bug菌
发布2023-09-10 08:45:59
2420
发布2023-09-10 08:45:59
举报
代码语言:javascript
复制
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

1. 前言

Spring Boot作为一款高效的Java开发框架,拥有丰富的组件库和依赖管理机制,能够大大简化Java Web应用的开发过程。MyBatis是一种轻量级的Java持久化框架,它避免了传统的JDBC编程中繁琐的重复代码,提供了更加优雅简洁的数据访问接口。本文将介绍如何使用Spring Boot集成MyBatis,使用XML配置方式访问MySQL,实现增删改查功能。

2. 摘要

本文主要介绍了如何在Spring Boot中使用MyBatis框架来访问MySQL数据库,包括配置MyBatis和MySQL数据库的相关信息,使用MyBatis生成Mapper接口,以及使用Mapper接口来进行增删改查操作。最后,本文还提供了测试代码和总结。

3. 正文

3.1 配置文件

在完成项目初始化之后,我们需要将MyBatis和MySQL的依赖添加到pom.xml文件中:

代码语言:javascript
复制
<dependencies>
    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>
</dependencies>

示例截图如下:

image.png
image.png

接着我们还需要在application.properties文件中配置MySQL的数据库信息:

代码语言:javascript
复制
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3.2 配置文件数据库表

在MySQL中创建一个名为user_info的表,表结构如下:

代码语言:javascript
复制
CREATE TABLE `user_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` int(11) NOT NULL,
  `gender` varchar(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

3.3 配置文件实体类

定义一个User类,与数据库表user_info对应:

代码语言:javascript
复制
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String gender;
    // 省略getter和setter方法
}

3.4 映射文件

创建一个名为UserMapper.xml的XML文件,在其中配置User类与数据库表user_info的映射关系:

代码语言:javascript
复制
<?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.example.demo.mapper.UserMapper">
    <resultMap id="userResultMap" type="com.example.demo.entity.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
        <result property="gender" column="gender"/>
    </resultMap>

    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into user_info(name, age, gender)
        values(#{name}, #{age}, #{gender})
    </insert>

    <delete id="deleteUserById">
        delete from user_info where id=#{id}
    </delete>

    <update id="updateUserNameById">
        update user_info set name=#{name} where id=#{id}
    </update>

    <select id="getUserById" resultMap="userResultMap">
        select * from user_info where id=#{id}
    </select>

    <select id="listUsers" resultMap="userResultMap">
        select * from user_info
    </select>
</mapper>

示例截图如下:

image.png
image.png

3.5 DAO层

创建UserMapper接口,定义对User类的CRUD操作:

代码语言:javascript
复制
@Repository
public interface UserMapper {
    int insertUser(User user);
    int deleteUserById(Integer id);
    int updateUserNameById(@Param("id") Integer id, @Param("name") String name);
    User getUserById(Integer id);
    List<User> listUsers();
}

示例截图如下:

image.png
image.png

3.6 Service层

创建UserService类,调用UserMapper接口中的方法,实现业务逻辑:

代码语言:javascript
复制
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public int insertUser(User user) {
        return userMapper.insertUser(user);
    }

    public int deleteUserById(Integer id) {
        return userMapper.deleteUserById(id);
    }

    public int updateUserNameById(Integer id, String name) {
        return userMapper.updateUserNameById(id, name);
    }

    public User getUserById(Integer id) {
        return userMapper.getUserById(id);
    }

    public List<User> listUsers() {
        return userMapper.listUsers();
    }
}

示例截图如下:

image.png
image.png

3.7 测试代码

创建一个名为UserTest的测试类,编写测试用例:

代码语言:javascript
复制
@SpringBootTest
class UserTest {
    @Autowired
    private UserService userService;

    @Test
    void listUsers() {
        List<User> userList = userService.listUsers();
        for (User user : userList) {
            System.out.println(user);
        }
    }

    @Test
    void getUserById() {
        User user = userService.getUserById(1);
        System.out.println(user);
    }

    @Test
    void insertUser() {
        User user = new User();
        user.setName("Tom");
        user.setAge(20);
        user.setGender("男");
        System.out.println(userService.insertUser(user));
    }

    @Test
    void deleteUserById() {
        System.out.println(userService.deleteUserById(1));
    }

    @Test
    void updateUserNameById() {
        System.out.println(userService.updateUserNameById(2, "Jerry"));
    }
}

3.8 结果展示

运行测试代码,可以看到以下结果:

User(id=1, name=Tom, age=20, gender=男) 1 1 1 User(id=2, name=Jerry, age=22, gender=女) User(id=3, name=Lucy, age=18, gender=女)

可以看到,测试代码成功地实现了对MySQL数据库的CRUD操作。

4. 全文小结

本文介绍了如何使用Spring Boot集成MyBatis,并使用XML配置方式访问MySQL实现增删改查的功能。首先我们在pom.xml文件中添加了MyBatis和MySQL的依赖,接着在application.properties文件中配置了MySQL的数据库信息,然后创建了user_info表和User类,并在UserMapper.xml文件中配置了类与表的映射关系以及对应的CRUD操作。接着我们在DAO层中创建了UserMapper接口,在Service层中实现了对UserMapper接口中方法的调用,最后编写了一组测试用例,演示了对MySQL数据库的增删改查操作。通过本文的学习,我们应该掌握了Spring Boot集成MyBatis访问MySQL的基本方法,对于Java Web应用的开发会有更深入的理解。

关于我

👨‍🎓作者:bug菌 ✏️博客:CSDN掘金infoQ51CTO等 🎉简介:CSDN|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 摘要
  • 3. 正文
    • 3.1 配置文件
      • 3.2 配置文件数据库表
        • 3.3 配置文件实体类
          • 3.4 映射文件
            • 3.5 DAO层
              • 3.6 Service层
                • 3.7 测试代码
                  • 3.8 结果展示
                  • 4. 全文小结
                  • 关于我
                  相关产品与服务
                  云数据库 MySQL
                  腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档