SpringBoot【2】集成 MyBatis Plus

SpringBoot 集成 MyBatis Plus

  • 前言
  • 修改 pom.xml
  • 修改配置文件
  • 添加 实体类
  • 添加 持久层接口
  • 添加 持久层 XxxMapper.xml 文件
  • 添加 业务接口层
  • 添加 业务接口实现类
  • 添加 控制层
  • 添加 MyBatis 配置
    • AutoFillMetaObjectHandler
    • MyBatisPlusConfig
  • 验证

前言

由于 MySQL 备份/恢复测试,模拟应用数据实时写入数据库的场景。
现集成 MyBatis Plus 做于笔记。

当前项目是以《SpringBoot 集成 Druid》基础进行持续集成的。
持续集成 MyBatis Plus 完成之后的项目截图如下:
在这里插入图片描述

客户表数据参考《MySQL数据库-创建测试数据》,表结构如下:

	-- 1 -* 客户表
create table client(id bigint not null primary key auto_increment comment '自增ID',client_id bigint not null comment 'ID编号',user_no varchar(30) comment '账号',user_password varchar(60) comment '密码',nick_name varchar(30) comment '昵称',real_name varchar(30) comment '真实姓名',created_time datetime default now() comment '创建时间',upated_time datetime default now() comment '更新时间'
);

修改 pom.xml

在《SpringBoot 集成 Druid》章节中的 pom.xml文件已经将 MyBatis Plus 的依赖以配置完成。

<!-- mybatis-plus 依赖https://baomidou.com/getting-started/<mybatis.plus.boot.starter.version>3.3.1</mybatis.plus.boot.starter.version>
-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version> ${mybatis.plus.boot.starter.version} </version>
</dependency>

修改配置文件

application.yml 文件中,添加以下配置:

# mybatis plus 配置
mybatis-plus:global-config:db-config:logic-delete-value: 1logic-not-delete-value: 0mapper-locations: classpath*:/mapper/*Mapper.xmltype-aliases-package: com.junjiu.springboot.druid.entity

完整配置如下:

# 端口
server:port: 5826spring:application:# 应用名称name: junjiu-springboot-druiddatasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://192.168.88.54:3306/ideadb?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=falseusername: fid_ideapassword: 123456initial-size: 10max-active: 100min-idle: 10max-wait: 60000pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20time-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 300000max-evictable-idle-time-millis: 600000validation-query: SELECT 1 FROM DUAL# validation-query-timeout: 5000test-on-borrow: falsetest-on-return: falsetest-while-idle: trueconnection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000#filters: #配置多个英文逗号分隔(统计,sql注入,log4j过滤)filters: stat,wallstat-view-servlet:enabled: trueurl-pattern: /druid/*# 监控页面配置.
jj:druid:monitor:login-username: rootlogin-password: 123456reset-enable: false# mybatis plus 配置
mybatis-plus:global-config:db-config:logic-delete-value: 1logic-not-delete-value: 0mapper-locations: classpath*:/mapper/*Mapper.xmltype-aliases-package: com.junjiu.springboot.druid.entity

添加 实体类

package com.junjiu.springboot.druid.entity;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.io.Serializable;
import java.util.Date;/*** program: junjiu-springboot-druid* ClassName: ClientEntity* description:** @author: 君九* @create: 2024-06-12 22:55* @version: 1.0**/
@Data
@TableName("client")
public class ClientEntity implements Serializable {/*** -- 1 -* 客户表* create table client(*    id bigint not null primary key auto_increment comment '自增ID',*    client_id bigint not null comment 'ID编号',*    user_no varchar(30) comment '账号',*    user_password varchar(60) comment '密码',*    nick_name varchar(30) comment '昵称',*    real_name varchar(30) comment '真实姓名',*    created_time datetime default now() comment '创建时间',*    upated_time datetime default now() comment '更新时间'* );*/private Long id;private Long clientId;private String userNo;private String userPassword;private String nickName;private String realName;private Date createdTime;private Date updatedTime;}

添加 持久层接口

package com.junjiu.springboot.druid.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.junjiu.springboot.druid.entity.ClientEntity;
import org.apache.ibatis.annotations.Mapper;/*** program: junjiu-springboot-druid* ClassName: ClientMapper.xml* description:** @author: 君九* @create: 2024-06-12 22:57* @version: 1.0**/
@Mapper
public interface ClientMapper extends BaseMapper<ClientEntity> {
}

添加 持久层 XxxMapper.xml 文件

此处文件名称定义为 ClientMapper.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.junjiu.springboot.druid.mapper.ClientMapper"><!-- 通用查询映射结果 --><resultMap id="BaseResultMap" type="com.junjiu.springboot.druid.entity.ClientEntity"><id column="id" property="id" /><result column="client_id" property="clientId" /><result column="user_no" property="userNo" /><result column="user_password" property="userPassword" /><result column="nick_name" property="nickName" /><result column="real_name" property="realName" /><result column="created_time" property="createdTime" /><result column="updated_time" property="updatedTime" /></resultMap><!-- 通用查询结果列 --><sql id="Base_Column_List">id, client_id, user_no, user_password, nick_name, real_name, created_time, updated_time</sql></mapper>

添加 业务接口层

package com.junjiu.springboot.druid.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.junjiu.springboot.druid.entity.ClientEntity;/*** program: junjiu-springboot-druid* ClassName: ClientService* description:*  客户端业务接口.** @author: 君九* @create: 2024-06-12 22:57* @version: 1.0**/
public interface ClientService extends IService<ClientEntity> {
}

添加 业务接口实现类

package com.junjiu.springboot.druid.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junjiu.springboot.druid.entity.ClientEntity;
import com.junjiu.springboot.druid.mapper.ClientMapper;
import com.junjiu.springboot.druid.service.ClientService;
import org.springframework.stereotype.Service;/*** program: junjiu-springboot-druid* ClassName: ClientServiceImpl* description:*  客户业务实现类.** @author: 君九* @create: 2024-06-12 22:58* @version: 1.0**/
@Service
public class ClientServiceImpl extends ServiceImpl<ClientMapper, ClientEntity> implements ClientService {}

添加 控制层

package com.junjiu.springboot.druid.controller;import com.junjiu.springboot.druid.entity.ClientEntity;
import com.junjiu.springboot.druid.service.ClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** program: junjiu-springboot-druid* ClassName: ClientController* description:** @author: 君九* @create: 2024-06-12 22:59* @version: 1.0**/
@RestController
@RequestMapping("/client")
public class ClientController {@Autowiredprivate ClientService clientService;/*** 测试添加数据.* @return*/@RequestMapping("/testAdd")public String testAdd() {ClientEntity clientEntity = new ClientEntity();clientEntity.setClientId(1001L);clientEntity.setNickName("九皇叔叔");clientEntity.setRealName("君九");clientEntity.setUserNo("JunJiu");clientEntity.setUserPassword("123456");clientService.save(clientEntity);return "Success.";}}

添加 MyBatis 配置

说明:
当前配置主要两个方面:

  1. 分页配置:Table表格展示数据时的分页功能。
  2. 自动填充配置:添加|修改|逻辑删除 时需更新时间的功能。

AutoFillMetaObjectHandler

package com.junjiu.springboot.druid.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.time.LocalDateTime;/*** program: junjiu-springboot-druid* ClassName: AutoFillMetaObjectHandler* description:** @author: 君九* @create: 2024-06-12 22:52* @version: 1.0**/
@Component
public class AutoFillMetaObjectHandler  implements MetaObjectHandler {/*** 新增数据时,自动填充创建时间+修改时间 为当前时间。* @param metaObject*/@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createdTime", LocalDateTime.class, LocalDateTime.now());this.strictInsertFill(metaObject, "updatedTime", LocalDateTime.class, LocalDateTime.now());}/*** 更新数据时,自动填充创建时间+修改时间 为当前时间。* @param metaObject*/@Overridepublic void updateFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "updatedTime", LocalDateTime.class, LocalDateTime.now());}
}

MyBatisPlusConfig

package com.junjiu.springboot.druid.config;import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** program: junjiu-springboot-druid* ClassName: MyBatisPlusConfig* description:** @author: 君九* @create: 2024-06-12 22:49* @version: 1.0**/
@Configuration
public class MyBatisPlusConfig {@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}/***  自动填充功能* @return*/@Beanpublic GlobalConfig globalConfig() {GlobalConfig globalConfig = new GlobalConfig();globalConfig.setMetaObjectHandler(new AutoFillMetaObjectHandler());return globalConfig;}}

验证

  1. 启动项目
  • 进入到如下类中,鼠标右键 Run 启动即可。
    在这里插入图片描述
  1. 在浏览器访问:http://localhost:5826/client/testAdd
    在这里插入图片描述
  2. 查询数据库
    在这里插入图片描述

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

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

相关文章

Spring-JdbcTemplate

了解知道即可 JdbcTemplate环境配置 先加入依赖&#xff1a; 在pom.xml中要引入spring和mysql的依赖&#xff1a; <!--仓库和依赖--><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><ur…

Java阻塞队列:ArrayBlockingQueue

Java阻塞队列&#xff1a;ArrayBlockingQueue ArrayBlockingQueue是Java中的一个阻塞队列&#xff08;Blocking Queue&#xff09;实现&#xff0c;它是线程安全的&#xff0c;并且基于数组实现。ArrayBlockingQueue常用于生产者-消费者模型&#xff0c;在这种模型中&#xff…

某集团数字化转型蓝图规划项目案例(94页PPT)

案例介绍&#xff1a; 本集团数字化转型蓝图规划项目通过确定目标&#xff0c;如制定集团数字化转型的整体战略和规划&#xff0c;明确转型方向和目标。构建数字化业务体系&#xff0c;实现业务流程数字化、智能化。搭建数字化管理平台&#xff0c;提升集团内部的管理效率和决…

Pyshark——安装、解析pcap文件

1、简介 PyShark是一个用于网络数据包捕获和分析的Python库&#xff0c;基于著名的网络协议分析工具Wireshark和其背后的libpcap/tshark库。它提供了一种便捷的方式来处理网络流量&#xff0c;适用于需要进行网络监控、调试和研究的场景。以下是PyShark的一些关键特性和使用方…

C语言期末考试大纲详解

一&#xff1a; C语言的基本概念 C语言是一种通用的、过程式的计算机编程语言&#xff0c;设计提供了低级内存访问和简单、灵活的语言结构。以下是关于C语言的一些基本概念和组成部分的详细解释。 文件扩展名 .c&#xff1a;这是C语言源代码文件的扩展名。它包含了程序员编…

Noisee 和 Suno创作十二生肖震撼视频 – 有详细的实操步骤

历史文章 日赚800&#xff0c;利用淘宝/闲鱼进行AI音乐售卖实操 如何让AI生成自己喜欢的歌曲-AI音乐创作的正确方式 抖音主播/电商人员有福了&#xff0c;利用Suno创作产品宣传&#xff0c;让产品动起来-小米Su7 用sunoAI写粤语歌的方法&#xff0c;博主已经亲自实践可行 …

docker desktop for mac os如何使用本地代理

在macbook上弄了个代理&#xff0c;然后按照网上所说的去配代理 然后测试下 docker pull busybox 结果无反应&#xff0c;超时。我去&#xff01;&#xff01;&#xff01; 鼓捣了半天&#xff0c;看了docker官网&#xff0c;问了chatgpt &#xff0c;按照它们所说的试了下也没…

想学编程,什么语言最好上手?

Python是许多初学者的首选&#xff0c;因为它的语法简洁易懂&#xff0c;而且有丰富的资源和社区支持。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频 讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;…

Gone框架介绍26 - Gone v1.x 版本 正式发布,更加强大的依赖注入,更加卓越的执行效率

gone是可以高效开发Web服务的Golang依赖注入框架 github地址&#xff1a;https://github.com/gone-io/gone 文档地址&#xff1a;https://goner.fun/zh/ 文章目录 优化和新特性gone 核心功能增强内置Goners覆盖测试 后续计划 优化和新特性 gone 核心功能增强 重构了函数参数依…

【区分】累次极限与二重极限

累次极限与二重极限不要混淆&#xff0c;区分好下面5个命题

Python学习笔记13 -- API的说明及使用

一、API说明 1、API&#xff1a;Application Programming Interface -- 接口 2、Restful API&#xff1a;基于网页的API 3、JSON&#xff1a;JavaScript objection Notation 4、很多数据都可以找到公用API 二、安装requests模块 在终端输入&#xff1a; 可以保证使用当前…

单片机多个中断源时的设计思路,(51为例)工作寄存器R0-R7

51单片机中四组工作寄存器&#xff08;R0-R7&#xff09; 参考 可以看出每个工作寄存器区有8个字节即为R0-R7&#xff0c;当不指定使用哪个工作寄存器区的时候默认0区。其他工作区作为普通的RAM使用。特殊功能寄存器中有可以位寻址和不能位寻址的区域 下面文字引用 通过修改…

常用静止轨道卫星(geostationary satellite)及相关产品

1. 数据简介 维基百科 link 地球静止轨道&#xff08;或称地球赤道同步轨道&#xff0c;英语&#xff1a;geostationary orbit&#xff0c;简写&#xff1a;GEO&#xff09;是指地球赤道面上方35,786km的圆形轨道&#xff0c;该轨道上航天器的运行方向和地球自转方向一致。在…

使用python绘制三维散点图

使用python绘制三维散点图 三维散点图三维散点图的用途效果代码 三维散点图 三维散点图&#xff08;3D Scatter Plot&#xff09;是一种用于展示三维数据的图表。与二维散点图类似&#xff0c;三维散点图通过点在三维空间中的位置来表示数据点的三个特征。每个点在 x、y 和 z …

突破数据存储瓶颈!转转业财系统亿级数据存储优化实践--图文解析

突破数据存储瓶颈&#xff01;转转业财系统亿级数据存储优化实践–图文解析 原文链接&#xff1a;https://juejin.cn/post/7358704806779437097 原文作者&#xff1a;转转技术团队 业财系统&#xff1a;业务和财务一体化系统 与传统财务记账不同&#xff0c;一笔金额不再是…

【Python网络爬虫分步走】使用LXML解析网页数据

Python网络爬虫分步走 – 使用LXML解析网页数据 Web Scraping in Python - Using LXML to Parse Web Data By Jackson@ML Lxml作为Python的第三方库,提供易用的且功能强大的API,用来解析XML和HTML文档。事件驱动的API被用于分步骤解析。 本文简要介绍使用lxml库解析网页的基…

Digital电路仿真软件的安装

文章目录 1. Java环境的安装 2. Digital安装 3. 软件配置 1. Java环境的安装 电路仿真软件Digital是一款用于设计和仿真数字逻辑电路的工具。它可以帮助用户创建、测试和调试各种数字电路&#xff0c;提供可视化的电路编辑环境&#xff0c;使得设计过程更加直观和便捷。 D…

MySQL数据操作与查询- 连接查询

一、引入 1、为什么需要使用连接查询&#xff1f; 查询信息的来源如果来自多张表&#xff0c;则必须对这些表进行连接查询。 2、连接查询的分类 内连接和外连接。 二、内连接 1、概述 将两张表的记录组合在一起&#xff0c;产生一个新的结果。 &#xff08;1&#xff09…

【Java】过滤器/拦截器

文章目录 两者区别request链路全过程 在实际开发中&#xff0c;过滤器和拦截器都是经常使用的技术&#xff0c;但一被提及到其区别时&#xff0c;整个人就愣住了&#xff0c;好像没有认真地对两者进行区别和总结&#xff0c;这两者之间也确实很容易混淆&#xff0c;因此结合了很…

Milvus Cloud 问答机器人 上线!构建企业级的 Chatbot

01. 背景 早些时候我们在社区微信群发出了一份关于Milvus Cloud 自动问答机器人的调研问卷。 调研受到了社区同学的积极响应,很快我们就收到了很多热心用户的回复。 基于这些回复,我们整理出了 Milvus Cloud Chatbot 的形态: 以功能使用和文档查询为核心 提供聊天和搜索双形…