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的使用非常方便,能够大大提升开发效率。

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

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

相关文章

  • jsp+jdbc实现连接数据库的方法

    下面我将详细讲解使用JSP和JDBC连接数据库的实现方法。 确认需求 首先需要明确自己的需求,比如需要连接的数据库的名称、表格的结构以及需要进行什么样的操作等等。此处以连接MySQL数据库为例,假设需要查询表格中所有用户的信息。 准备工作 在进行连接数据库之前,需要完成以下准备工作: 确认数据库的JDBC驱动版本,下载对应版本的JDBC驱动程序。 将驱动程序…

    Java 2023年6月15日
    00
  • SpringBoot中使用redis做分布式锁的方法

    SpringBoot是一个基于Spring框架的快速开发脚手架,提供了很多方便的开箱即用的特性,其中通过使用redis做分布式锁来解决并发问题也是常用的一种方式。下面是详细讲解“SpringBoot中使用redis做分布式锁的方法”的完整攻略。 一、使用redis实现分布式锁的原理 分布式锁是指在分布式的环境下,多个进程、线程协同合作访问共享资源的过程中,使…

    Java 2023年5月20日
    00
  • SpringMVC中controller返回json数据的方法

    让我们来详细讲解一下“SpringMVC中controller返回json数据的方法”的完整攻略。 1.确保项目中已经引入SpringMVC相关的依赖 在使用SpringMVC返回json数据之前,需要确保项目中已经引入SpringMVC相关的依赖。通常情况下,这些依赖可以在pom.xml文件中找到。具体的依赖包括:spring-web、spring-web…

    Java 2023年5月26日
    00
  • java实现学生成绩信息管理系统

    Java实现学生成绩信息管理系统攻略 1. 系统介绍 学生成绩信息管理系统是一种用于存储、管理学生学习成绩信息的应用程序。它可以实现学生信息、课程信息的录入、查询以及成绩管理等多个功能。 2. 系统实现步骤 2.1 设计数据结构 设计数据结构是任何系统实现的前置工作,学生成绩信息管理系统也不例外。首先需要考虑的是系统需要处理哪些数据,包括学生信息、课程信息、…

    Java 2023年5月24日
    00
  • Java读取、写入文件如何解决乱码问题

    当我们使用Java读取、写入文件时,由于文件码表不同,可能会出现乱码问题。解决乱码问题可以从以下两个方面入手: 设置读写文件的字符集为UTF-8 Java应该尽量使用UTF-8编码来处理文本文件。为此,我们可以通过使用Java API提供的InputStreamReader和OutputStreamWriter来指定字符集为UTF-8。 示例一:读取文件时指…

    Java 2023年5月20日
    00
  • 基于ajax实现文件上传并显示进度条

    下面是基于ajax实现文件上传并显示进度条的完整攻略: 1. 准备工作 在前端实现基于ajax的文件上传需要以下几个工具/库: FormData对象:用于创建一个表单数据对象,方便把文件和其他数据打包发送到服务器端。 XMLHttpRequest对象:用于创建异步请求,可以通过它向服务器端发送数据。 FileReader对象:用于读取本地文件并把它转换成ba…

    Java 2023年5月20日
    00
  • java数组的初始化及操作详解

    Java数组的初始化及操作详解 什么是数组 在Java中,数组是一种用于存储固定数量元素的数据结构。它允许同一类型的元素存储在相邻的内存位置中,通过数字索引访问元素,可以在常量时间内访问任何一个元素。 数组的初始化 静态初始化 静态初始化是将数组在声明时进行初始化,代码格式如下: 数据类型[] 数组变量名 = {元素1, 元素2, …}; 示例: int…

    Java 2023年5月26日
    00
  • Javaweb实现上传下载文件的多种方法

    Javaweb实现上传下载文件的多种方法攻略 在开发Javaweb应用时,文件的上传和下载是非常常见的需求。本文将介绍Javaweb实现上传下载文件的多种方法,并提供两个代码示例。 上传文件的几种方式 1. 使用Servlet API实现文件上传 使用Servlet API实现文件上传需要使用标准的 javax.servlet 库中配套的 HttpServl…

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