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日

相关文章

  • 详解如何在Spring Security中自定义权限表达式

    在对Spring Security中自定义权限表达式的攻略之前,先简单介绍一下权限表达式的作用: Spring Security中的权限表达式用于在方法调用或请求访问时,判断当前用户是否具有访问权限。Spring Security提供了很多默认的权限表达式,例如”hasRole()”和”hasAnyRole()”等。但是,我们有时需要根据不同的业务需求来自定…

    Java 2023年5月20日
    00
  • Java实现雪花算法的原理和实战教程

    Java实现雪花算法完整攻略 什么是雪花算法 雪花算法 (SnowFlake)是 Twitter 开源的分布式ID生成算法,其核心原理是依靠一个64位长度的long型唯一 ID,其中包含了时间戳、数据机房标识、机器标识以及同一毫秒内的递增序列号等各种信息,能够实现非常高效且不会重复的 ID 生成。 雪花算法的原理 首先,我们需要定义我们的ID格式。Twitt…

    Java 2023年5月19日
    00
  • quartz时间表达式Cron详解

    Quartz 时间表达式 Cron 详解 1. Cron 表达式语法 Cron 表达式是一个字符串,包含了六个时间元素和一个可选的第七个元素,决定了任务的触发时间。每个时间元素以空格分隔,格式为: 秒(0~59) 分钟(0~59) 小时(0~23) 日(1~31) 月(1~12) 星期(0~7) 其中星期可以使用数字(0~7)来表示,也可以使用英文缩写(SU…

    Java 2023年5月20日
    00
  • 【Jmeter】按比例分配Api压测

    先看 【Jmeter】基础介绍-详细 【Jmeter】Request1输出作为Request2输入-后置处理器 继续聊提出的第二个问题,即   2.需要按比例分配API请求并发,以模拟真实的API压力场景 做压测的时候,一般的需求都是多个API同时压,不然也看不出真正的tps是多少啊。 比如虽然接口a的需求并发不高,500个用户才请求一次,但是特别耗性能,导…

    Java 2023年4月25日
    00
  • 一文吃透Elasticsearch

    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址 如果访问不了Github,可以访问gitee地址。 gitee地址 跟大家分享Elastic…

    Java 2023年4月17日
    00
  • 讲解ssm框架整合(最通俗易懂)

    下面是详细的“讲解ssm框架整合(最通俗易懂)”攻略,希望对你有帮助。 SSM框架整合 介绍 SSM框架整合是一种结合了Spring、SpringMVC和MyBatis的Web开发框架。其中,Spring用来管理和注入Bean,SpringMVC用来实现Web应用程序的MVC模式,而MyBatis则用来将Java对象映射到数据库表中的记录。 整合步骤 下面是…

    Java 2023年5月20日
    00
  • Spring Boot Shiro在Web应用中的作用详解

    Spring Boot Shiro在Web应用中的作用详解 简介 Spring Boot Shiro是基于Spring Boot和Shiro的安全管理框架,可以方便地集成到Web应用中。它提供了一种简单、灵活且强大的身份验证和授权机制,可以在应用中实现多种安全需求,并且易于扩展和定制。 快速开始 依赖 在您的pom.xml文件中添加Spring Boot S…

    Java 2023年6月2日
    00
  • jsp分页显示的实现代码

    那我就来为大家详细讲解一下JSP分页显示的实现代码的完整攻略。 1. 实现分页的前提条件 在使用JSP实现分页显示前,我们需要先了解一下实现的前提条件。这里列出了两点: 数据库的分页查询:在获取数据时,需要使用数据库的分页查询功能,比如MySQL中的LIMIT语句; JSP中的JavaBean:在JSP中,使用JavaBean来封装分页数据,显示到JSP页面…

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