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

下面我将详细讲解“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日

相关文章

  • MongoDB和redis

    一 简介 MongoDB是一款强大、灵活、且易于扩展的通用型数据库1、易用性 MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库。不采用关系型主要是为了获得更好得扩展性。当然还有一些其他好处,与关系数据库相比,面向文档的数据库不再有“行“(row)的概念取而代之的是更为灵活的“文档”(document)模型。通过在…

    Redis 2023年4月13日
    00
  • ssm项目改造spring boot项目完整步骤

    下面我将详细讲解“ssm项目改造spring boot项目完整步骤”的完整攻略。 第一步:项目结构调整 在进行ssm项目改造为spring boot项目之前,需要对项目结构进行调整。具体步骤如下: 删除旧的配置文件,在src/main/resources文件夹下新建application.properties或application.yml配置文件。 针对旧…

    database 2023年5月21日
    00
  • MongoDB 监控工具mongostat和mongotop的使用

    MongoDB是一个高性能、分布式、面向文档的NoSQL数据库,使用它可以方便地存储和查询海量数据。但是在进行大规模的数据分析、复杂的查询及数据调优时,我们需要能够对MongoDB进行监控,进而优化系统性能。mongostat和mongotop是MongoDB监控工具中比较重要的两个,下面我将详细讲解它们的使用。 mongostat的使用 mongostat…

    database 2023年5月22日
    00
  • 关于Redis的工作模式

    在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master。 缺点:哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内…

    Redis 2023年4月13日
    00
  • 【MySQL】索引和锁

    前言 本文摘自数据库两大神器【索引和锁】 InnoDB存储引擎 索引 在之前,我对索引有以下的认知: 索引可以加快数据库的检索速度 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度。 索引需要占物理和数据空间。 了解过索引的最左匹配原则 知道索引的分类:聚集索引和非聚集索引 Mysql…

    MySQL 2023年4月12日
    00
  • 详解Mysql两表 join 查询方式

    针对“详解MySQL两表Join查询方式”的问题,我整理了如下的攻略: 一、Join查询的介绍 Join查询是一种在MySQL数据库中用于联接两个或多个表的方法。它通过匹配两个或多个表中的数据列来组合产生一个新的、包含了来自多张表中字段数据的查询结果集。Join查询有很多种类型,包括内连接、左连接、右连接和全连接等。在本次攻略中,我们将会详解Join查询的两…

    database 2023年5月22日
    00
  • PouchDB 和 MS SQL Server 的区别

    PouchDB和MS SQL Server是两种不同的数据库系统,它们拥有不同的数据存储和查询特性。下面对它们的区别进行详细的讲解: PouchDB PouchDB是一个本地化的JavaScript数据库,可以在浏览器、Node.js和Electron等平台上使用。它基于Apache CouchDB,提供了类似CouchDB的API和功能,但是可以在客户端使…

    database 2023年3月27日
    00
  • redis如何设置database个数

    下面就为你详细介绍如何在Redis中设置database个数: 1. redis.conf文件中设置database个数 Redis配置文件redis.conf中可以设置database的个数。该文件路径一般为:/etc/redis/redis.conf。 打开redis.conf文件,可以看到注释掉的如下行: #databases 16 这行代码表示Red…

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