JAVA:Spring Boot整合MyBatis Plus持久层

news2024/11/16 21:57:59

1、简述

MyBatis Plus是MyBatis的增强工具包,它在MyBatis的基础上进行了扩展,提供了许多便捷的功能,例如通用CRUD操作、分页插件、代码生成器等。使用MyBatis Plus,开发者可以更加方便地进行持久层操作,并且减少了很多重复劳动。

在这里插入图片描述

官网地址:https://baomidou.com/

2、环境准备

在开始整合之前,我们需要准备好以下环境:

  • JDK 1.8或以上版本
  • Maven 3.x
  • Spring Boot 2.x
  • MyBatis Plus

你可以通过Maven或者Gradle等工具来管理项目依赖,确保将Spring Boot和MyBatis Plus的相关依赖添加到项目中:

<!-- mybatis -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.1.2</version>
</dependency>
<!-- mysql -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
<!-- lombok -->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>

3、配置数据源

在Spring Boot项目中,我们需要配置数据源以便连接数据库。在application.properties或application.yml文件中添加数据库相关的配置,包括数据库URL、用户名、密码等信息。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: yourpassword
    driver-class-name: com.mysql.cj.jdbc.Driver

配置当前Mybatis当前mapper扫描xml的路径:

mybatis:
  mapper-locations: classpath*:/mapper/**/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.xhl.shiro.modules.*.entity

4、编写实体类

接下来,我们需要创建与数据库表对应的实体类。这些实体类通常使用JPA注解或者MyBatis Plus的注解来映射数据库表和Java对象之间的关系。

import com.baomidou.mybatisplus.annotation.TableName;

@TableName("user")
public class User {
    private Long id;
    private String username;
    private String password;
    
    // Getters and setters
}

5、编写Mapper接口

使用MyBatis Plus,我们不需要编写XML形式的Mapper文件,只需要创建Mapper接口并继承BaseMapper接口即可。MyBatis Plus会根据命名规范自动生成SQL语句。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {
    // 自定义方法
}

配置Mybatis的Mapper类文件的包扫描路径:

@SpringBootApplication
@MapperScan(basePackages = {"com.xhl.shiro.modules.mapper"})
public class BootLaunchApplication {
    public static void main(String[] args) {
        SpringApplication.run(BootLaunchApplication.class, args);
    }
}

xml配置样例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xhl.oauth2.modules.mapper.UserMapper">
    <resultMap id="userMap" type="com.xhl.oauth2.modules.vo.SysUserVo">
        <id property="userId" column="user_id"/>
        <result property="userName" column="username"/>
        <result property="password" column="password"/>
        <collection property="roles" ofType="string">
            <result column="role_name" property="roleName"/>        </collection>
    </resultMap>
    <select id="selectOneUserByUserName" parameterType="String" resultMap="userMap">
        select u.*
             ,sr.role_name
        from sys_user u
                 LEFT JOIN sys_user_role sru on u.user_id= sru.user_id
                 LEFT JOIN sys_role sr on sru.role_id = sr.role_id
        where username= #{userName}
	</select>
</mapper>

6、编写Service层

在Service层,我们可以编写业务逻辑代码,调用Mapper层进行数据库操作:

import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final UserMapper userMapper;

    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }
    
    // 自定义业务方法
}

7、整合测试

至此,我们已经完成了Spring Boot与MyBatis Plus的整合。可以编写一些简单的测试用例来验证持久层操作是否正常。

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class UserServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void testInsert() {
        User user = new User();
        user.setUsername("test");
        user.setPassword("123456");
        userService.save(user);
    }

    // 更多测试方法
}

8、总结

通过本文的介绍,我们学习了如何使用Spring Boot整合MyBatis Plus,从而简化持久层操作。借助这两个强大的框架,我们可以更加高效地开发Java应用程序,并且减少了大量的重复工作。希望本文对你有所帮助,谢谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1700575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫实战:利用代理IP获取电商数据

文章目录 1.电商数据介绍2.爬取目标3.代理IP推荐4.准备工作4.1 模块安装4.2 代理IP获取 5.爬虫代码实战5.1分析网页5.1.1 获取cookie5.1.2 关键词分析5.1.3 翻页分析5.1.4 数据获取分析 5.2 发送请求5.3 提取数据5.4 保存数据5.5 完整源码5.6 数据分析六、总结 1.电商数据介绍 …

[随笔] 在CSDN的6周年纪念日随笔

纪念 转眼已过6年&#xff0c;大一的时候学习编程&#xff0c;潜水 CSDN 学习各类博文&#xff0c;才学浅薄就没有主动写博文记录自己的学习历程。 过了段时间刚刚到了大二&#xff0c;很喜欢 Todolist&#xff0c;意气风发的写下《一份清爽的编程计划》&#xff0c;哈哈。 …

冷冻式压缩空气干燥机常见几种系统原理图

冷冻式压缩空气干燥机 我们以两种典型的设计流程图为例 1.干式蒸发型&#xff0c;这类冷干机是我们最为常见的设计型式。下图为deltech公司的典型流程图 此类设备各家设计不同的最大区别基本就是在换热器的结构型式上有比较大的区别。换热器主要有&#xff1a;管壳式、铝板换、…

【openlayers系统学习】00官网的Workshop介绍

00Workshop介绍 官方文档&#xff1a;https://openlayers.org/workshop/en/ openlayers官网Workshop学习。 通过官网Workshop&#xff0c;系统学习openlayers的使用。 基本设置 这些说明假定您从最新Workshop版本的 openlayers-workshop-en.zip​ 文件开始。此外&#xff…

KingbaseES数据库merge语法

数据库版本&#xff1a;KingbaseES V008R006C008B0014 简介 MERGE 语句是一种用于数据操作的 SQL 语句&#xff0c;它能够根据指定的条件将 INSERT、UPDATE 和 DELETE 操作结合到单个语句中。其主要作用是在目标表和源表之间进行数据比较和同步&#xff0c;根据条件的匹配情况来…

IBERT眼图扫描(高速收发器八)

前文讲解了GTX的时钟及收发数据通道的组成&#xff0c;之后讲解了眼图、加重、均衡等原理及原因&#xff0c;本文通过xilinx提供的IBERT IP完成实际工程的眼图扫描&#xff0c;确定加重和幅值调节的参数。 1、回环模式 在此之前&#xff0c;需要了解一下GTX的回环模式。如果板…

批处理作业调度问题 (回溯法)

目录 一、问题解析 二、实例剖析 三、算法思路 四、代码实现 结果&#xff1a; 总结 前言 【问题】n 个作业{1, 2, …, n}要在两台机器上处理&#xff0c;每个作业必须先由机器 1 处理&#xff0c;再由机器 2 处理&#xff0c;机器 1 处理作业i所需时间为 ai&#xff0c;…

【Unity实战篇 】| Unity实现 文本框可以自适应大小,到达最大宽度之后再缩小字体

前言 在文本框可以自适应大小拉伸的前提下,增加一个最大限制宽度,使其到达最大宽度后 再启用 Best Fit 实现自适应改变文字大小以适应文本框的大小。 【Unity实战篇 】 | Unity实现 Text文本框可以自适应大小,到达最大宽度之后再缩小字体 在Unity中经常会用到文本组件的自…

Jmeter插件下载(下载和使用教程)

插件管理器&#xff1a;plugins-manager下载安装和使用 下载&#xff1a; 官网地址&#xff1a;https://jmeter-plugins.org/install/Install/ 步骤1&#xff1a;将下载jmeter-plugins-manager-1.10.jar放到目录apache-jmeter-5.1.1\lib\ext&#xff0c;如下图 步骤2&#x…

《最新出炉》系列入门篇-Python+Playwright自动化测试-42-强大的可视化追踪利器Trace Viewer

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 在我们日常执行自动化测试工作的过程中&#xff0c;经常会遇到一些偶发性的bug&#xff0c;但是因为bug是偶发性的&#xff0c;我们不一定每次执行都能复现&#xff0c;所以我…

力扣刷题--747. 至少是其他数字两倍的最大数【简单】

题目描述 给你一个整数数组 nums &#xff0c;其中总是存在 唯一的 一个最大整数 。 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是&#xff0c;则返回 最大元素的下标 &#xff0c;否则返回 -1 。 示例 1&#xff1a; 输入&#xff1a;n…

Android端 可使用Yolov5训练 路标识别

相信大家对于路标识别&#xff0c;红绿灯识别&#xff0c;图形识别opencv中也是一件烦人的事情&#xff0c;其参数是及其受到现实环境因素的影响的&#xff0c;那么今天我就给大家推荐一种方式&#xff0c;缺点是周期长&#xff0c;但其优点是如果训练效果好久对于环境的各种变…

河南乙级道路与桥梁资质年审材料准备要点解析

河南乙级道路与桥梁资质年审材料准备要点解析如下&#xff1a;河南宽信权经理 一、企业基本情况材料 营业执照副本复印件&#xff1a;确保复印件清晰、完整&#xff0c;并加盖企业公章。 企业章程&#xff1a;提供最新的企业章程&#xff0c;并加盖企业公章。此材料需反映企业…

matepad11和matepad2023区别

​ 华为MatePad11和MatePad2023是华为公司推出的两款平板电脑&#xff0c;它们在处理器、价格和屏幕等方面存在差异。具体分析如下&#xff1a; 处理器 MatePad 11英寸2023款&#xff1a;搭载骁龙865处理器&#xff0c;最高主频为2.84GHz。 MatePad 2023&#xff1a;配备骁…

Android:使用Kotlin搭建MVVM+组件化App架构

一、简介Android MVVM架构模式 请点击查看Android&#xff1a;使用Kotlin搭建MVVM架构模式 二、简介组件化 以前一个项目所有业务代码都在App&#xff08;model&#xff09;里开发&#xff0c;App里按照功能模块分包&#xff0c;例如&#xff1a;首页&#xff08;home&#xff…

58同城前端社招一面挂了,面试总结:coding能力有待提高

总结面试不足&#xff1a;coding能力有待提高&#xff0c;项目对于大厂面试来说不够有亮点&#xff0c;难度不够&#xff0c;对于技术细节不够深入。下周继续加油&#xff0c;噢力给给&#xff01;&#xff01;&#xff01;&#x1f62d;&#x1f62d;&#x1f62d; 面试题 1、…

[Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解

目录 1.买卖股票的最佳时机含冷冻期1.题目链接买卖股票的最佳时机含冷冻期2.算法原理详解3.代码实现 2.买卖股票的最佳时机含手续费1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机含冷冻期 1.题目链接 买卖股票的最佳时机含冷冻期 2.算法原理详解 思路&#xff…

Realcome:AI赋能,引领虚拟博主创业新纪元

在数字化浪潮汹涌的时代&#xff0c;一个崭新的科技品牌正在崭露头角——Realcome&#xff0c;一家以AI智能交互服务为核心&#xff0c;为企业提供全方位数字化营销解决方案的科技服务公司。自2021年成立以来&#xff0c;Realcome凭借其前沿的技术和创新的理念&#xff0c;迅速…

漂流瓶挂机项目,聊天脚本赚钱新玩法,号称单机30-50+ (教程+软件)

一、项目简介&#xff1a; 漂流瓶挂机项目主要是通过使用探遇漂流瓶、音麦漂流瓶等聊天软件&#xff0c;为用户提供一个聊天赚钱的平台。男性用户需要充值后才能发送消息&#xff0c;而女性用户则可以通过接收消息赚取分红。男性用户发送给女性用户的消息费用大约在.1-.2元之间…

【openlayers系统学习】4.2Mapbox 样式渲染图层

二、Mapbox 样式渲染图层 显然我们目前的地图需要一些样式。 VectorTile​ 图层的样式与 Vector​ 图层的样式工作方式完全相同。那里描述的样式在这里也适用。 对于这样的地图&#xff0c;创建数据驱动的样式&#xff08;对矢量图层操作&#xff09;非常简单。但矢量切片也用…