《Techporters架构搭建》-Day02 集成Mybatis-plus

news2024/12/23 6:20:53

集成Mybatis-plus

  • Mybatis-plus
  • 集成Mybatis-plus步骤
  • 小结

Mybatis-plus

Mybatis-plus官网
MyBatisPlus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。它引入了一些新的特性,如自动填充、乐观锁插件、逻辑删除等,同时还内置了一些常用的CRUD操作,极大地减少了开发人员的工作量。

集成Mybatis-plus步骤

①在tps-system-biz模块下build.gradle添加Mybatis-plus依赖;数据库我用的是Mysql8,所以还得添加Mysql驱动

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    //Mybatis-plus依赖
    implementation 'com.baomidou:mybatis-plus-spring-boot3-starter:3.5.7'
    //mysql驱动
	implementation 'mysql:mysql-connector-java:8.0.23'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

② Springboot创建默认配置文件为application.properties,在配置文件里面添加mysql配置(默认本地已经安装mysql数据库)

# 数据库驱动类
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/tps?useSSL=false&serverTimezone=UTC
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=root

③在数据库创建一张表system_user,同时随便加入一条或者多条数据

CREATE TABLE `system_user`  (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户账号',
  `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '密码',
  `nickname` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户昵称',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
  `dept_id` bigint NULL DEFAULT NULL COMMENT '部门ID',
  `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户邮箱',
  `mobile` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '手机号码',
  `sex` tinyint NULL DEFAULT 0 COMMENT '用户性别',
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '头像地址',
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '帐号状态(0正常 1停用)',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` char(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 129 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表';

SQL语句

INSERT INTO `system_user` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `email`, `mobile`, `sex`, `avatar`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`, `tenant_id`) VALUES (1, '张三', '123456', '往事随风', NULL, 1, 'zhangsan@163.com', '15478774547', 0, '', 0, '', '2024-07-18 14:49:44', '', '2024-07-18 14:49:44', '0', 0);

④ 在tps-system-biz模块下新增实体类SystemUser

package com.tps.cloud.system.entity;

import java.util.Date;
import java.io.Serializable;

/**
 * 用户信息表(SystemUser)实体类
 *
 * @author makejava
 * @since 2024-07-18 11:35:11
 */
public class SystemUser implements Serializable {
    private static final long serialVersionUID = 544417121746252574L;
    /**
     * 用户ID
     */
    private Long id;
    /**
     * 用户账号
     */
    private String username;
    /**
     * 密码
     */
    private String password;
    /**
     * 用户昵称
     */
    private String nickname;
    /**
     * 备注
     */
    private String remark;
    /**
     * 部门ID
     */
    private Long deptId;
    /**
     * 用户邮箱
     */
    private String email;
    /**
     * 手机号码
     */
    private String mobile;
    /**
     * 用户性别
     */
    private Integer sex;
    /**
     * 头像地址
     */
    private String avatar;
    /**
     * 帐号状态(0正常 1停用)
     */
    private Integer status;
    /**
     * 创建者
     */
    private String createBy;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 更新者
     */
    private String updateBy;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 是否删除
     */
    private String deleted;
    /**
     * 租户编号
     */
    private Long tenantId;
	//覆盖toString,方便打印
	@Override
    public String toString() {
        return "Person: " + username + " " + nickname;
    }
	...省略Getter/Setter方法
}

⑤新建mapper包,编写 Mapper 接口类 SystemUserMapper .java

package com.tps.cloud.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tps.cloud.system.entity.SystemUser;

public interface SystemUserMapper extends BaseMapper<SystemUser> {

}

⑥在 TpsSystemBizApplication 启动类中添加 @MapperScan 注解,扫描 mapper 文件夹:

package com.tps.cloud.system;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.tps.cloud.system.mapper")
public class TpsSystemBizApplication {

    public static void main(String[] args) {
        SpringApplication.run(TpsSystemBizApplication.class, args);
    }

}

⑦在DemoController 类中添加selectUser方法,从数据库查询用户信息,这里我们需要通过@Autowired注入SystemUserMapper

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/demo")
public class DemoController {

    @Autowired
    private SystemUserMapper systemUserMapper;

    @GetMapping("/get")
    public String get() {
        return "恭喜你,你的接口通了!";
    }

    @GetMapping("/selectUser")
    public void selectUser() {
        System.out.println(("----- selectAll method test ------"));
        List<SystemUser> userList = systemUserMapper.selectList(null);
        userList.forEach(System.out::println);
    }
}

⑧ 通过ApiFox调用http://localhost:8080/demo/selectUser接口,IDEA console打印结果如下:
在这里插入图片描述
⑨ 现在我们完善一下接口,针对用户的增删改查接口,然后用ApiFox测试一下。

package com.tps.cloud.system.controller;

import com.tps.cloud.system.entity.SystemUser;
import com.tps.cloud.system.mapper.SystemUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;

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

    @Autowired
    private SystemUserMapper systemUserMapper;

    /**
     * 查询所有用户
     */
    @GetMapping("/selectUser")
    public List<SystemUser> selectUser() {
        List<SystemUser> userList = systemUserMapper.selectList(null);
        return userList;
    }

    /**
     * 保存用户
     */
    @PostMapping("/saveUser")
    public void saveUser(SystemUser user) {
        //设置ID值,目前缺少ID生成策略,先默认1L
        user.setId(1l);
        systemUserMapper.insert(user);
    }

    /**
     * 更新用户信息
     */
    @PutMapping("/updateUser")
    public void updateUser(SystemUser user) {
        systemUserMapper.updateById(user);
    }

    /**
     * 根据用户id删除用户
     */
    @DeleteMapping("/deleteUser")
    public void deleteUser(String userId) {
        systemUserMapper.deleteById(userId);
    }

    /**
     * 根据用户id查询用户
     */
    @GetMapping("/selectUserById")
    public SystemUser selectUserById(String userId) {
        SystemUser user = systemUserMapper.selectById(userId);
        return  user;
    }
}


小结

通过以上几个简单的步骤,我们实现 system_user表的 CRUD 功能,甚至连 XML 文件都不用编写!
从以上步骤中,我们可以看到集成 MyBatis-Plus 非常的简单,只需要引入 starter 依赖,简单进行配置即可使用。
MyBatisPlus不仅支持mysql,还支持的数据库:

  • mariadb 、oracle 、db2 、h2 、hsql 、sqlite 、postgresql 、sqlserver、presto 、Gauss 、Firebird。
  • Phoenix 、clickhouse 、Sybase ASE 、 OceanBase、达梦数据库 、虚谷数据库 、人大金仓数据库 、南大通用数据库。

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

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

相关文章

免费的数字孪生平台助力产业创新,让新质生产力概念有据可依

关于新质生产力的概念&#xff0c;在如今传统企业现代化发展中被反复提及。 那到底什么是新质生产力&#xff1f;它与哪些行业存在联系&#xff0c;我们又该使用什么工具来加快新质生产力的发展呢&#xff1f;今天我将介绍一款为发展新质生产力而量身定做的数字孪生工具。 新…

java学校--Object类方法--toString

第一点解析&#xff1a; 全类名就是包名加类名 getClass&#xff08;&#xff09;.getName()是得到其包名和类名如图&#xff0c;包名是com.hspedu.object_类名是Monster。 Integer.toHexString&#xff08;hashCode&#xff08;&#xff09;&#xff09;&#xff1b;是得到其…

【2024最新版】Vue前端面试篇,看这一篇就够了

文章目录 Vue常用的指令都有哪些v-bind和v-model的区别Vue2的生命周期有哪些Vue3的生命周期有哪些vue3中创建响应式变量的方法ref和reactive原理vuex有哪些方法vue-router生命周期钩子vue框架和原生JavaScript有什么区别对于提升项目加载速度和运行效率是怎么做的webpack能做什…

栈及栈的应用(有效的括号 力扣20)

栈的概念 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 画个图理解一下 咱们可以观…

【笔记:3D航路规划算法】一、随机搜索锚点(python实现,讲解思路)

目录 关键概念3D路径规划算法1. A*算法2. 快速随机锚点1. 初始化&#xff1a;2. 实例化搜索算法&#xff1a;3. 路径生成&#xff1a;4. 绘制图像&#xff1a; 3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、…

关于垂直领域大模型的探索和尝试

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

SpringCloud—08—高级之SpringCloud Alibaba中—Sentinel

文章目录 提前预知18、Sentinel是什么&#xff1f;18.1、sentinel是什么&#xff1f;18.2、Sentinel下载安装运行18.3、Sentinel初始化监控18.4、Sentinel流控规则1、流控规则基本介绍2、流控规则之-QPS-直接-快速失败3、流控规则之-线程数-直接失败4、流控规则之-QPS-关联-快速…

实战篇(十):使用Processing创建可爱花朵:实现随机位置、大小和颜色的花朵

使用Processing创建可爱花朵 0.效果预览1. 引言2. 设置Processing环境3. 创建花朵类4. 实现花瓣绘制5. 绘制可爱的笑脸6. 鼠标点击生成花朵7. 完整代码8. 总结与扩展0.效果预览 在本教程中,我们将使用Processing编程语言来创建一个可爱的花朵生成器。通过封装花朵为一个类,并…

git教程, 命令行版

前言 git就是代码版本管理系统&#xff0c;很简单的作用就是每一次commit之后&#xff0c;修改文件都是跟上一次commit的仓库文件做对比&#xff0c;也可以调出历史的文件查看某次commit修改了什么东西 0环境准备&#xff1a; 安装git, 百度一下&#xff0c;然后打开cmd&…

教室管理系统的开发与实现(Java+MySQL)

引言 教室管理系统是学校和培训机构日常运营中不可或缺的工具。本文将介绍如何使用Java、Swing GUI、MySQL和JDBC开发一个简单而有效的教室管理系统&#xff0c;并涵盖系统的登录认证、教室管理、查询、启用、暂停和排课管理功能。 技术栈介绍 Java&#xff1a;作为主要编程…

[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4635 标注数量(xml文件个数)&#xff1a;4635 标注数量(txt文件个数)&#xff1a;4635 标注…

base SAS programming学习笔记(read raw files3)

使用LIST INPUT 来读入位置不固定的外部文件&#xff0c;如下所示&#xff1a; 1.LIST input格式 INPUT variable <$> :$符合表示字符&#xff0c;variable是读入的变量名&#xff1b;默认的数值和字符长度为8&#xff1b;可以使用length 语句为字符变量设置长度&#xf…

学习测试10-1自动化 python基础

下载python 要配置环境变量 进入Python的官方下载页面 http://www.python.org/download/安装PyCharm工具&#xff0c;网上可以下载&#xff0c;很多资源&#xff0c;也有免安装的版本&#xff0c;在网上找激活码 链接: https://pan.baidu.com/s/1Y6S_n3KbnjOdE9EDZ5nixw?pwdd…

使用Windows Linux 子系统安装 Tensorflow,并使用GPU环境

在Microsoft Store商店安装Ubuntu 20.04 使用 nvidia-smi 命令查看GPU信息&#xff0c;查看支持的CUDA版本&#xff0c;这里最高支持11.7 安装cuda工具集 进入官网&#xff1a;CUDA Toolkit Archive | NVIDIA Developer&#xff0c;现在对应版本&#xff0c;点击 配置平台&…

走进数组的奇妙之旅(1)

引言&#xff1a; 在前几篇文章中&#xff0c;我们深入探讨了函数的奥秘。在讲述函数知识的过程中&#xff0c;我们邂逅了一个新的概念&#xff0c;你或许还记得在演示 strcpy函数时&#xff0c;出现的这行代码&#xff1a;char1[20]{0};。当时&#xff0c;你是否感到好奇&…

前端组件化实践:Vue自定义加载Loading组件的设计与实现

摘要 随着前端技术的飞速发展&#xff0c;组件化开发已成为提高开发效率、降低维护成本的重要方法。本文介绍了前端Vue自定义加载Loading组件的设计思路与实现过程&#xff0c;该组件通过设置gif动画实现加载效果&#xff0c;可广泛应用于页面请求加载场景。通过该组件的实践&…

银行业务知识全篇(财务知识、金融业务知识)

第一部分 零售业务 1.1 储蓄业务 4 1.1.1 普通活期储蓄(本外币) 4 1.1.2 定期储蓄(本外币) 5 1.1.3 活期一本通 9 1.1.4 定期一本通 10 1.1.5 电话银行 11 1.1.6 个人支票 11 1.1.7 通信存款 13 1.1.8 其他业务规…

解决AI训练中的“Convergence Warning”报错:提高模型稳定性 ️‍♂️

解决AI训练中的“Convergence Warning”报错&#xff1a;提高模型稳定性 &#x1f3cb;️‍♂️ 解决AI训练中的“Convergence Warning”报错&#xff1a;提高模型稳定性 &#x1f3cb;️‍♂️摘要引言“Convergence Warning”报错的成因分析 &#x1f914;1. 学习率设置不当2…

昇思学习打卡-23-生成式/CycleGAN图像风格迁移互换

文章目录 模型介绍网络结构数据集可视化网络的其他细节模型推理 模型介绍 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络&#xff0c;实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。 该模型一个重要应用领域是域迁移(Do…

VMware中Ubuntu磁盘空间的清理

最近发现Ubuntu占用空间过大&#xff0c;在网上找了一些方法&#xff0c;在这里总结一下。 1.删除快照 把不需要的快照删除&#xff0c;但要注意删除快照可能会影响到后续的快照链。每个快照依赖于前面的快照。如果删除一个中间快照&#xff0c;虚拟机可能无法找到完整的差异…