Spring Boot整合Mybatis并完成CRUD操作的实现示例

yizhihongxing

下面我将详细讲解“Spring Boot整合Mybatis并完成CRUD操作的实现示例”的完整攻略。

一、环境准备

开发这个项目需要准备如下环境:

  • JDK8
  • Maven
  • IDEA或Eclipse
  • MySQL数据库

二、创建Spring Boot项目

  1. 打开IDEA,点击 File -> New -> Project 来创建一个Spring Boot项目,选择 Spring Initializr 选项;

  2. 在弹出的页面上,选择如下选项:

  3. Project SDK: 选择你的 JDK8 版本

  4. Project Language: 选择 Java
  5. Spring Boot: 选择 2.5.5(或更高) 版本
  6. Project Metadata: 根据需求填写metadata信息

  7. 点击 Next 按钮,在下一个页面中添加如下依赖:

  8. Spring Web

  9. MyBatis Framework
  10. MySQL Driver
  11. Lombok

  12. 点击 Next 按钮来确认配置,之后点击 Finish 并等待项目创建完成。

三、配置数据库

  1. 在项目的resource目录下,创建一个 application.yml 的文件,用于配置项目的相关信息,如下所示:

yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456

要根据自己的实际数据库配置信息来填写上述配置。

  1. 接下来,在resource目录下 创建 mybatis 文件夹,并在该文件夹下创建 mapper 文件夹和 config 文件夹。

  2. config 文件夹下新建一个 MybatisConfig.java 文件,配置Mybatis相关信息,如下所示:

```java
@Configuration
@MapperScan("com.example.mapper")
public class MybatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);

       // 为实体类的别名指定的包路径(不指定在XML文件中的参数需要写全路径)
       sessionFactoryBean.setTypeAliasesPackage("com.example.entity");

       // 添加XML资源路径
       PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
       sessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:mybatis/mapper/*.xml"));

       return sessionFactoryBean.getObject();
   }

}
```

  1. 接着,在 mapper 文件夹下新建 UserMapper.javaUserMapper.xml 两个文件,分别用于定义Mapper接口和SQL语句。

  2. UserMapper.java

    java
    public interface UserMapper {
    List<User> findAllUsers();
    void insertUser(User user);
    User findUserById(Integer id);
    void updateUser(User user);
    void deleteUserById(Integer id);
    }

  3. UserMapper.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.example.mapper.UserMapper">
    <select id="findAllUsers" resultType="com.example.entity.User">
    SELECT * FROM user;
    </select>
    <insert id="insertUser">
    INSERT INTO `user` ( `username`, `password`) VALUES (#{username}, #{password});
    </insert>
    <select id="findUserById" resultType="com.example.entity.User">
    SELECT * FROM user WHERE id=#{id};
    </select>
    <update id="updateUser">
    UPDATE `user` SET `username` = #{username}, `password` = #{password} WHERE id = #{id};
    </update>
    <delete id="deleteUserById">
    DELETE FROM `user` WHERE id=#{id};
    </delete>
    </mapper>

  4. 最后,在 entity 包下新建一个 User.java 文件,该文件对应上述SQL中的 user 表,如下所示:

java
@Data // 使用 lombok 自动生成getter、setter、toString 方法
public class User {
private Integer id;
private String username;
private String password;
}

四、定义控制器

在项目中定义一个控制器,用于和前端页面交互,完成 CURD 操作。

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/findAll")
    public List<User> findAll() {
        return userMapper.findAllUsers();
    }

    @PostMapping("/addUser")
    public String addUser(@RequestBody User user) {
        userMapper.insertUser(user);
        return "success";
    }

    @GetMapping("/findById/{id}")
    public User findById(@PathVariable Integer id) {
        return userMapper.findUserById(id);
    }

    @PutMapping("/updateUser")
    public String updateUser(@RequestBody User user) {
        userMapper.updateUser(user);
        return "success";
    }

    @DeleteMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable Integer id) {
        userMapper.deleteUserById(id);
        return "success";
    }
}

其中 /user/findAll 表示查询所有用户, /user/addUser 表示新增用户, /user/findById/{id} 表示根据id查询用户, /user/updateUser 表示修改用户信息, /user/deleteUser/{id} 表示删除用户。

五、启动项目并测试

  1. 启动项目

在IDEA中,点击项目中的 Run 按钮,或使用快捷键 Shift+F10 来启动项目。

  1. 测试项目

通过 Postman 或者浏览器输入以下地址进行测试:

  • 查询所有用户:http://localhost:8080/user/findAll/
  • 新增用户:http://localhost:8080/user/addUser/
  • 查询用户:http://localhost:8080/user/findById/{id}
  • 修改用户:http://localhost:8080/user/updateUser/
  • 删除用户:http://localhost:8080/user/deleteUser/{id}

至此,Spring Boot整合Mybatis并完成CRUD操作的实现示例已经完成了。

示例代码1: https://github.com/spring-projects/spring-boot/tree/main/spring-boot-samples/spring-boot-sample-mybatis

示例代码2: https://github.com/zhua2517/springboot-mybatis-plus-demo

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot整合Mybatis并完成CRUD操作的实现示例 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • TestTrack Pro怎么安装?TestTrack Pro安装配置详细图文教程

    下面是“TestTrack Pro怎么安装?TestTrack Pro安装配置详细图文教程”的完整攻略: 1. 下载TestTrack Pro安装包 首先,在官方网站下载TestTrack Pro安装包。在下载页面选择与你的操作系统匹配的版本,一般有Windows和Mac版本可供选择。 2. 安装TestTrack Pro 下载完成后,双击安装包开始安装。根…

    database 2023年5月22日
    00
  • 详解mysql数据去重的三种方式

    下面是“详解MySQL数据去重的三种方式”的完整攻略。 一、通过DISTINCT实现去重 DISTINCT是MySQL内置函数,它用于筛选不同值。通过SELECT语句,查询需要去重的字段,然后在字段前添加DISTINCT关键字即可。例如: SELECT DISTINCT field_name FROM table_name; 实例: 假设有一张名为books…

    database 2023年5月19日
    00
  • 太坑了吧!一次某某云上的redis读超时排查经历

    一次排查某某云上的redis读超时经历 性能排查,服务监控方面的知识往往涉及量广且比较零散,如何较为系统化的分析和解决问题,建立其对性能排查,性能优化的思路,我将在这个系列里给出我的答案。 问题背景 最近一两天线上老是偶现的redis读超时报警,并且是业务低峰期间,甚是不解,于是开始着手排查。 以下是我的排查思路。 排查思路 查阅 redis 慢查询日志 既…

    Redis 2023年4月13日
    00
  • Quartz集群原理以及配置应用的方法详解

    Quartz集群原理以及配置应用的方法详解 概述 Quartz是一个轻量级的、开源的、基于Java的调度框架,提供了很多调度的功能,比如创建多个定时任务、按照特定的规则执行任务、支持持久化、集群等。其中,Quartz集群支持多个应用实例共同组成一个调度集群,提高任务的可用性和可靠性。 Quartz集群原理 Quartz集群通过基于JDBC的持久化机制实现了数…

    database 2023年5月21日
    00
  • 通过Jedis操作Redis

      package com.yh; import org.junit.After; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.params.SetParams; import java…

    Redis 2023年4月11日
    00
  • jsp基础速成精华讲解

    JSP基础速成精华讲解 前言 JSP即Java Server Pages,是一种基于Java语言的Web开发技术,拥有快速开发、易于维护等特点。本文主要从以下几方面来讲解JSP的基础知识: JSP页面基本结构 JSP中的表达式 JSP中的脚本 JSP中的指令 JSP中的标签库 JSP页面基本结构 示例1: <%@ page language=&quot…

    database 2023年5月21日
    00
  • MySQL开启慢查询日志功能的方法

    下面是 MySQL 开启慢查询日志功能的方法完整攻略。 1. 为什么要开启慢查询日志? MySQL 慢查询日志可以记录执行时间超过一定阈值的查询,便于我们发现系统中的性能瓶颈以及优化 SQL 语句。因此,在出现系统性能问题时,开启慢查询日志功能可以快速发现 SQL 语句耗时较长的查询,进而作出有效改进。 2. 如何开启慢查询日志? 在MySQL中开启慢查询日…

    database 2023年5月22日
    00
  • 教你如何在Centos8-stream安装PostgreSQL13

    下面我将详细讲解如何在Centos8-stream安装PostgreSQL13的完整攻略。 环境准备 在开始安装前,我们需要确保以下环境已经准备好: 安装了Centos8-stream操作系统的系统,具有root权限 确保网络通畅,能够访问国内外的yum源 安装PostgreSQL13 在Centos8-stream操作系统中,我们可以使用yum命令进行Po…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部