SpringBoot集合Mybatis过程解析

SpringBoot集成Mybatis过程解析

1. 简介

SpringBoot是基于Spring框架的快速应用开发框架,整合了众多好用的组件,非常适合开发中小型项目。而Mybatis则是一个轻量级的ORM框架,可以让我们更加方便地操作数据库。

在本篇攻略中,我们将会详细讲解如何在SpringBoot项目中集成Mybatis,并完成对数据库的CRUD操作。

2. 准备工作

在开始之前,我们需要来准备一些必要的工具和环境。

2.1 环境要求

  • JDK 1.8+
  • Maven 3.2+
  • SpringBoot 2.0+
  • Mybatis 3.5+

2.2 工具准备

为了方便我们操作数据库,在本次攻略中,我们将会使用到Navicat Premium这个数据库管理工具。当然,如果你有其他熟悉的工具可以替代的话也是可以的。

3. 创建SpringBoot项目

首先,我们需要创建一个基于SpringBoot的Maven项目,可以通过以下命令在命令行中创建:

mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

4. 引入依赖

在我们创建的项目中,我们需要引入一些必要的依赖,包括SpringBoot和Mybatis。在pom.xml中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>
</dependencies>

5. 数据库配置

在项目中,我们需要配置数据库连接信息,在application.properties中添加以下配置:

spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456

在这里,我们配置的是MySQL数据库,并将URL、用户名、密码等信息都写在了application.properties中。

6. 创建实体类

我们的CRUD操作需要作用在某个实体类上,因此我们需要创建一个实体类表示数据库中的表。

com.example.mybatisdemo包下创建User.java文件,包含以下代码:

public class User {
    private Long id;
    private String name;
    private Integer age;

    // 省略getter/setter方法
}

7. 创建Mapper

Mybatis的Mapper文件与业务代码分离,使得我们的代码更加清晰简洁。在这里,我们会使用Mybatis的注解来代替XML文件进行Mapper映射。

com.example.mybatisdemo包下创建UserMapper.java文件,包含以下代码:

@Mapper
public interface UserMapper {
    @Insert("insert into user(name, age) values(#{name}, #{age})")
    int insert(User user);

    @Select("select * from user where id=#{id}")
    User selectByPrimaryKey(Long id);

    @Update("update user set name=#{name}, age=#{age} where id=#{id}")
    int updateByPrimaryKey(User user);

    @Delete("delete from user where id=#{id}")
    int deleteByPrimaryKey(Long id);
}

在这里,我们使用@Mapper注解标注这个接口是一个Mapper,然后使用注解来声明各个方法对应的SQL语句。

8. 编写Service

在完成了实体类和Mapper的编写后,我们需要再创建一个Service来进行业务操作。

com.example.mybatisdemo包下创建UserService.java文件,包含以下代码:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

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

    public User selectByPrimaryKey(Long id) {
        return userMapper.selectByPrimaryKey(id);
    }

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

    public int deleteByPrimaryKey(Long id) {
        return userMapper.deleteByPrimaryKey(id);
    }
}

在这里,我们使用@Service注解标注这个类是一个Service,并自动注入了UserMapper对象,然后将各个方法对应到Mapper中的方法。

9. 测试

在完成上述的代码编写后,我们可以通过以下步骤来测试它是否可以正常工作:

  1. 在数据库中创建名为mybatis_demo的数据库;
  2. mybatis_demo数据库中创建以下表:
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. 编写Junit测试代码进行测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void test() {
        User user = new User();
        user.setName("Tom");
        user.setAge(20);

        userService.insert(user);

        Long id = user.getId();

        User user2 = userService.selectByPrimaryKey(id);
        Assert.assertEquals(user2.getName(), "Tom");

        user2.setName("Jerry");
        userService.updateByPrimaryKey(user2);
        User user3 = userService.selectByPrimaryKey(id);
        Assert.assertEquals(user3.getName(), "Jerry");

        userService.deleteByPrimaryKey(id);
        User user4 = userService.selectByPrimaryKey(id);
        Assert.assertNull(user4);
    }
}

这个测试代码会先创建一个User对象,然后插入到数据库中,并通过selectByPrimaryKey方法查询出来,然后更新它的名字并再次保存,最后删除这个用户,然后再次查询应该为null。

10. 示例

接下来,为了更好地理解这个过程,我们会提供两个完整的示例程序:简单示例和多模块示例。

10.1 简单示例

这个示例程序是一个简单的SpringBoot项目,只包含一个User实体类和一个UserService作为Service。完整代码可以查看springboot-mybatis-demo

10.2 多模块示例

这个示例程序是一个多模块的SpringBoot项目,包含三个模块:

  • mybatis-demo-common 包含一个User实体类;
  • mybatis-demo-dao 包含一个UserMapper和一个UserService
  • mybatis-demo-web 包含一个UserController,通过访问URL来调用UserService的方法。

完整代码可以查看springboot-mybatis-demo-multi-module

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集合Mybatis过程解析 - Python技术站

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

相关文章

  • SpringData JPA实现查询分页demo

    下面我会给出 Spring Data JPA 实现查询分页 Demo 的详细攻略。 1. 添加依赖 在项目的 pom.xml 文件中添加 Spring Data JPA 依赖: <dependency> <groupId>org.springframework.data</groupId> <artifactId&g…

    Java 2023年5月20日
    00
  • 常见JavaWeb安全问题和解决方案

    常见JavaWeb安全问题和解决方案 引言 JavaWeb应用的普及使其突显出越来越多的安全威胁。在开发JavaWeb应用时,我们需要考虑如何确保安全才能更好地保护用户个人信息和应用程序数据。本攻略为您提供了一些常见的JavaWeb安全问题和解决方案,希望对您有所帮助。 常见JavaWeb安全问题 SQL注入 SQL注入是一种常见的安全威胁,攻击者可以利用这…

    Java 2023年5月27日
    00
  • 详解Spring boot/Spring 统一错误处理方案的使用

    详解Springboot/Spring统一错误处理方案的使用 在SpringBoot/Spring应用程序中,错误处理是一个非常重要的方面。在本文中,我们将介绍如何使用SpringBoot/Spring的统一错误处理方案来处理应用程序中的错误。 步骤一:添加依赖 我们需要在pom.xml文件中添加Spring Boot Starter Web依赖。以下是一个…

    Java 2023年5月15日
    00
  • JS中操作JSON总结

    我们来详细讲解 JS 中操作 JSON 的完整攻略。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输,也被广泛应用于配置文件、日志文件等数据交换场景。在 JavaScript 中,我们可以直接操作 JSON,完成数据的解析、修改、序列化等操作。下面我们来逐步介绍相关知识点。 JSON 基础 J…

    Java 2023年5月26日
    00
  • 什么是类加载器的双亲委派模型的实现原理?

    类加载器的双亲委派模型是Java虚拟机用于加载类的一种规范,它保证在Java中每个类都有且仅有一个类对象,从而保证Java程序的正确性和安全性。本文将详细讲解类加载器双亲委派模型的实现原理。 双亲委派模型的概述 在Java虚拟机中,每个类都有一个唯一的全限定名,类加载器加载一个类时需要先检查父加载器是否已经加载该类。如果父加载器没有加载该类,则它会使用自己的…

    Java 2023年5月10日
    00
  • 什么是并行收集器?

    下面我来详细讲解一下“什么是并行收集器?”的完整使用攻略。 并行收集器是什么? 并行收集器就是一种并行执行的垃圾收集器,它利用多个线程同时进行垃圾收集。它针对的是堆内存比较大的场景,因为在这种场景下,垃圾收集器需要进行很多的扫描和标记操作,使用多线程可以有效加快垃圾收集的速度。 如何使用并行收集器? 使用并行收集器很简单,只需要使用以下参数即可: -Xmx&…

    Java 2023年5月10日
    00
  • 基于Java回顾之JDBC的使用详解

    基于Java回顾之JDBC的使用详解 1. 什么是JDBC JDBC是Java DataBase Connectivity的缩写,它是用于Java语言操作关系型数据库的应用程序接口(API)。JDBC提供了一种标准的方法,用于连接和操作各种类型的关系型数据库。 JDBC规范定义了一套Java类库,通过这些类库,我们可以在Java程序中使用SQL命令执行各种数…

    Java 2023年5月19日
    00
  • Maven 搭建SpringMVC+Hibernate项目详解

    下面将为您详细讲解“Maven 搭建SpringMVC+Hibernate项目详解”的完整攻略: 1. 前置条件 已安装好Java JDK、Eclipse、Maven 已掌握基础的SpringMVC和Hibernate知识 2. 新建Maven项目 打开Eclipse,选择File -> New -> Other,选择Maven Project,…

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