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日

相关文章

  • JavaScript修改注册表实例代码

    为避免不必要的风险和系统异常,建议不要随意修改注册表,如果您一定要进行此类操作,请务必备份您的注册表并谨慎操作。 以下是基于JavaScript修改注册表的攻略: 1. 确定注册表操作范围 在 JavaScript 中,我们可以使用 WScript 对象来修改注册表。但是,WScript 对象可能会对计算机系统的性能、稳定性和安全性产生不良影响。建议对于系统…

    Java 2023年5月23日
    00
  • Spring Security登陆流程讲解

    关于“Spring Security登陆流程讲解”的完整攻略,我会从以下几个方面进行详细讲解。 1. 流程概述 Spring Security是一个基于Spring框架的安全框架,它提供了诸如身份认证、授权、攻击防护等基础的安全功能,并且可对这些功能进行灵活的配置和定制。下面是Spring Security的登陆流程概述: 用户在前端输入用户名和密码并提交表…

    Java 2023年5月20日
    00
  • Java多线程的实现方式比较(两种方式比较)

    Java多线程是Java程序中常见的高级特性,使用多线程可以让程序同时执行多个任务,提高程序的效率。Java中多线程的实现方式主要有两种,一种是继承Thread类,一种是实现Runnable接口。下面我们来详细讲解这两种实现方式的比较。 继承Thread类的实现方式 继承Thread类是Java中自带多线程的一种实现方式,需要创建一个继承自Thread类的类…

    Java 2023年5月18日
    00
  • SpringMVC中拦截器的实现

    以下是关于“SpringMVC中拦截器的实现”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用Java Web开发框架,其核心思想是基于MVC模式来实现Web应用程序开发。而拦截器是SpringMVC框架的一个重要组件,可以在请求到达Controller之前或之后进行一些处理。本攻略将详细讲解SpringMVC中拦截器的实现方法。 2…

    Java 2023年5月16日
    00
  • js分页代码分享

    下面我来详细讲解一下“js分页代码分享”的完整攻略。 1. 理解分页原理 在开始编写分页代码之前,我们需要先理解分页的基本原理。分页的本质是将一组数据按照固定数量进行切割,每次只展示其中的一部分,而用户可以通过翻页的方式查看完整数据,其中翻页操作主要是通过修改 URL 参数、AJAX 异步加载新数据或重新渲染页面等方式实现。 2. 分页代码实现 实现分页代码…

    Java 2023年6月16日
    00
  • 详解使用Jenkins自动编译部署web应用

    详解使用Jenkins自动编译部署web应用 简介 Jenkins是一个开源的、支持持续集成和持续交付的软件开发工具。使用Jenkins可以编译、打包、测试和部署你的web应用程序。本文将详细讲解如何使用Jenkins自动编译部署web应用。 环境配置 在开始使用Jenkins自动编译部署web应用之前,需要进行一些环境配置。以下是环境配置的步骤: 安装Je…

    Java 2023年5月26日
    00
  • Java中的线程是什么?

    Java中的线程是程序执行的最小单位。线程是指在单个程序中执行的一组指令,这些指令共享同一个进程,并且可以访问相同的变量和对象。在Java中,线程是通过Thread类来实现的。 创建线程的方式 在Java中,创建线程有两种方式: 继承Thread类 通过继承Thread类并重写run方法来创建线程。示例代码如下: class MyThread extends…

    Java 2023年4月28日
    00
  • SpringBoot整合Web开发之Json数据返回的实现

    下面我来详细讲解一下“SpringBoot整合Web开发之Json数据返回的实现”的完整攻略。 1. 概述 在Web开发中,我们通常需要将Java对象转换成Json数据格式再返回给前端,SpringBoot提供了很方便的解决方案。以下将分别介绍使用SpringBoot实现json数据返回的两种方法:@ResponseBody注解和ResponseEntity…

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