《Techporters架构搭建》-Day02 集成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、达梦数据库 、虚谷数据库 、人大金仓数据库 、南大通用数据库。

相关推荐

  1. springboot集成mybatis-plus

    2024-07-20 06:16:05       49 阅读
  2. SpringBoot集成MyBatis-Plus

    2024-07-20 06:16:05       27 阅读
  3. MyBatis二、 MyBatis

    2024-07-20 06:16:05       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 06:16:05       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 06:16:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 06:16:05       45 阅读
  4. Python语言-面向对象

    2024-07-20 06:16:05       55 阅读

热门阅读

  1. HDFS和FDFS

    2024-07-20 06:16:05       20 阅读
  2. SQL Server语法大全

    2024-07-20 06:16:05       14 阅读
  3. 题解|2024暑期杭电多校01

    2024-07-20 06:16:05       21 阅读
  4. 【C语言ffmpeg】打开第一个视频

    2024-07-20 06:16:05       16 阅读
  5. 阿里云服务器 篇五:短链服务网站

    2024-07-20 06:16:05       16 阅读
  6. Held-Karp算法的C++代码

    2024-07-20 06:16:05       15 阅读
  7. 写一个简单的兼容GET/POST请求的登录接口

    2024-07-20 06:16:05       17 阅读
  8. 单例模式详解

    2024-07-20 06:16:05       18 阅读
  9. 鸿蒙 LazyForEach 踩坑

    2024-07-20 06:16:05       15 阅读
  10. 时序数据库-02-聊一聊时序数据库

    2024-07-20 06:16:05       19 阅读
  11. macbook的程序坞在主副屏切换

    2024-07-20 06:16:05       16 阅读
  12. 光纤跳线百科

    2024-07-20 06:16:05       17 阅读