SpringBoot整合Mybatis-plus案例及用法实例

SpringBoot是一个非常流行的Java开发框架,而Mybatis-Plus则是Mybatis框架的一个插件,提供了更加便捷的CRUD操作以及更优雅的SQL语句写法。下面就为大家详细讲解如何整合SpringBoot和Mybatis-Plus,并提供两个简单的用法示例。

1. 初始化SpringBoot项目

首先我们需要初始化一个SpringBoot项目,并引入相关依赖。可以在官方网站上选择相应的配置,也可以使用其他工具快速初始化项目。

pom.xml中加入如下依赖:

<dependencies>
    <!--SpringBoot Web依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--SpringBoot Mybatis依赖-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>

    <!--MySql数据库驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>

    <!--Druid数据库连接池-->
    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.2.6</version>
    </dependency>

    <!-- Mybatis-Plus 自动生成代码依赖-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.4.2</version>
    </dependency>
</dependencies>

2. 配置数据源

application.properties中配置数据源:

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# druid配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.on-remove-abandoned=true
spring.datasource.druid.remove-abandoned-timeout-millis=30000

#mybatis-plus配置
mybatis-plus.mapper-locations=classpath*:mapper/**Mapper.xml
mybatis-plus.type-aliases-package=com.example.demo.entity
mybatis-plus.configuration.map-underscore-to-camel-case=true

这里使用了Druid作为数据源连接池,确保SpringBoot整合Mybatis-Plus的稳定性。

3. 创建实体类

在创建数据库表后我们需要对应创建相应的实体类以方便操作。

例如我们创建了一个user表,那么对应的实体类应该是这样的:

@Getter
@Setter
public class User {

    private Integer id;

    private String name;

    private Integer age;

    private String email;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;
}

需要注意的是,Mybatis-Plus是基于反射的ORM框架,所以这里必须添加gettersetter方法。

4. 编写Mapper层

这里需要创建一个Mapper接口对数据库进行操作,该接口继承自Mybatis-Plus提供的BaseMapper接口。

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

注意:这里的Mapper接口必须使用@Mapper注解标记,否则Mybatis-Plus无法扫描该接口。

5. 编写Service层

在Service层中调用Mapper层的方法进行数据操作。

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public boolean addUser(User user) {
        int result = userMapper.insert(user);
        return result == 1;
    }

    @Override
    public boolean deleteUser(Integer userId) {
        int result = userMapper.deleteById(userId);
        return result == 1;
    }

    @Override
    public boolean updateUser(User user) {
        int result = userMapper.updateById(user);
        return result == 1;
    }

    @Override
    public User getUserById(Integer userId) {
        return userMapper.selectById(userId);
    }

    @Override
    public List<User> getUserList() {
        return userMapper.selectList(null);
    }
}

以上实现的是User相关的常用CURD操作。

6. 编写Controller层

在Controller中暴露接口供前端调用服务。

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

    @Autowired
    private UserService userService;

    @PostMapping("/add")
    public Map<String, Object> addUser(@RequestBody User user) {
        Map<String, Object> result = new HashMap<>();
        boolean isSuccess = userService.addUser(user);
        if (isSuccess) {
            result.put("code", 200);
            result.put("msg", "添加成功!");
        } else {
            result.put("code", 500);
            result.put("msg", "添加失败!");
        }
        return result;
    }
}

以上实现的是添加User操作相关的接口,类似的其他操作方法可以仿照此类进行实现。

示例一:Mybatis-Plus的查询操作

在Service接口中新增getUsersByName方法:

List<User> getUsersByName(String name);

在Service实现类中实现该方法:

@Override
public List<User> getUsersByName(String name) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda().eq(User::getName, name);
    return userMapper.selectList(queryWrapper);
}

以上实现的是根据name属性查询user的方法。

在Controller中新增相关接口:

@GetMapping("/byName")
public List<User> getUserByName(@RequestParam("name") String name) {
    return userService.getUsersByName(name);
}

该接口请求方式为GET请求,请求参数为name,返回值为符合条件的User列表。

示例二:Mybatis-Plus的分页操作

在Service接口中新增getUserPage方法:

IPage<User> getUserPage(Integer pageNo, Integer pageSize);

在Service实现类中实现该方法:

@Override
public IPage<User> getUserPage(Integer pageNo, Integer pageSize) {
    Page<User> page = new Page<>(pageNo, pageSize);
    return userMapper.selectPage(page, null);
}

以上代码实现的是对用户进行分页操作。

在Controller中新增该操作对应的接口:

@GetMapping("/list/{pageNo}/{pageSize}")
public IPage<User> getUserListByPage(@PathVariable("pageNo") Integer pageNo, @PathVariable("pageSize") Integer pageSize) {
    return userService.getUserPage(pageNo, pageSize);
}

通过访问/user/list/{pageNo}/{pageSize}接口即可获取所有User进行分页之后的结果。

至此,一个简单的SpringBoot整合Mybatis-Plus的示例就已经完成了。Mybatis-Plus的使用非常方便,能够大大提升开发效率。

阅读剩余 80%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合Mybatis-plus案例及用法实例 - Python技术站

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

相关文章

  • Java的值传递和引用传递

    值传递不会改变本身,引用传递(如果传递的值需要实例化到堆里)如果发生修改了会改变本身。 1.基本数据类型都是值传递 package com.example.basic; public class Test { public static void main(String[] args) { int a=10; modify(a); System.out.pr…

    Java 2023年4月20日
    00
  • spring boot实现在request里解密参数返回

    接下来我将为你详细讲解“Spring Boot实现在Request里解密参数返回”的完整攻略。在讲解前,我先对该攻略中的几个关键点进行解释: Request:Request是HTTP请求的对象,可以用来获取请求的参数、头信息、请求方法等内容。 解密参数:在网络请求过程中,为了保证传输数据的安全性,往往需要对数据进行加密处理。因此,在接收到数据时需要进行解密操…

    Java 2023年6月16日
    00
  • 31基于java的旅游信息系统设计与实现

    本章节来给大家介绍一个基于java的旅游信息系统设计与实现 系统概要 旅游产业的日新月异影响着城市,村镇旅游产业的发展变化。网络、电子科技的迅猛前进同样牵动着旅游产业的快速成长。随着人们消费理念的不断发展变化,越来越多的人开始注意精神文明的追求,而不仅仅只是在意物质消费的提高。旅游信息推荐信息系统设计与实现的设计就是帮助村镇,城市发展旅游产业,达到宣传效果,…

    Java 2023年5月8日
    00
  • Spring MVC全局异常实例详解

    Spring MVC全局异常实例详解 Spring MVC是一种基于Java的Web框架,它提供了许多便捷的功能和工具,使得开发者可以更加高效地开发Web应用程序。其中,全局异常处理是Spring MVC中常用的一种技术,本文将详细讲解如何在Spring MVC中实现全局异常处理,并提供两个示例来说明如何实现这一过程。 步骤一:创建Spring MVC项目 …

    Java 2023年5月17日
    00
  • java使用common-fileupload实现文件上传

    下面是使用Commons FileUpload实现Java文件上传的完整攻略: 前提条件 在使用Commons FileUpload之前,需要确保你已经满足以下的条件: 已经安装了Java SDK(至少是1.6或以上版本) 已经使用Eclipse等集成开发环境,或者手动配置好了Java的CLASSPATH。 已经有一个能够接受文件上传请求的Java Web应…

    Java 2023年5月20日
    00
  • 跨站脚本攻击XSS原理与防范实例分析

    跨站脚本攻击XSS原理与防范实例分析 XSS攻击原理 跨站脚本攻击(XSS)是通过在web应用程序中注入恶意脚本来攻击用户的一种常见安全漏洞。攻击者可将攻击代码注入到正常的web页面中,一旦被用户浏览器执行,就能够窃取用户的敏感信息或者利用用户的身份进行恶意操作。 XSS攻击通常分为以下三种类型: 存储型攻击:攻击者将恶意脚本注入到web应用程序中的数据库中…

    Java 2023年6月16日
    00
  • c#和java base64不一致的解决方法

    下面是关于“c#和java base64不一致的解决方法”的完整攻略,介绍如何解决c#和Java在base64编码上的差异问题。 问题背景 在编写应用程序时,我们经常需要将一些数据进行加密或者传输,在这个过程中,经常会用到base64编码。然而,尽管c#和Java都有对应的base64编解码方法,但是两种语言在实现上略有区别,这就导致了c#和Java在使用相…

    Java 2023年5月19日
    00
  • SpringBoot嵌入式Web容器原理与使用介绍

    SpringBoot嵌入式Web容器原理与使用介绍 什么是SpringBoot嵌入式Web容器 SpringBoot是基于Spring框架的一个快速开发框架,它内置了多种Web容器,可以很方便地选择使用嵌入式Web容器,而不需要依赖外置的Web容器。SpringBoot嵌入式Web容器是指将Web容器嵌入到应用程序中,将应用程序打成可执行的jar或war包后…

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