Idea创建项目
环境配置说明
在现代化的企业级应用开发中,合适的开发环境配置能够极大提升开发效率和应用性能。本文介绍的环境配置为:
- 操作系统:Windows 11
- JDK:JDK 21
- Maven:Maven 3.9.x
- IDE:IntelliJ IDEA 2024.x
- 数据库:MySQL 8.x
使用的核心框架和工具版本为:
- Spring Boot:3.4.5
- MyBatis-Plus:3.5.12
- Lombok:简化代码的自动化工具
这个配置组合为开发者提供了一个强大且现代化的基础,适用于构建高效、可扩展的企业级应用。具体而言:
-
Spring Boot 3.4.5:作为 Java 开发的主流框架,Spring Boot 提供了更加简洁、易于维护的开发体验。它集成了大量开箱即用的功能,简化了开发流程,极大提高了开发效率。
-
MyBatis-Plus 3.5.12:基于 MyBatis 的增强工具,MyBatis-Plus 在保持 MyBatis 灵活性的同时,提供了更多强大的功能,如自动生成 CRUD 操作,分页查询等,极大减少了重复代码量。通过这一工具,开发者可以更加专注于业务逻辑的实现,而不必为数据库操作编写大量冗余的代码。
-
Lombok:通过简单的注解,Lombok 可以自动生成 getter、setter、构造函数、toString 方法等,极大地简化了实体类的编写。它不仅节省了代码量,也使得代码更加清晰和易读。
进入下一个页面后勾选我们需要的依赖
选好之后点击create创建项目
选择项目打开的方式“选择新窗口”
Idea创建项目完成之后这个样子
去mybatisplus官网复制依赖到pom.xml文件
mybatisplus
官网 https://baomidou.com/getting-started/
复制依赖进入pom.xml,点击maven刷新等待
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.12</version>
</dependency>
完整的
pom
如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gt.demo</groupId>
<artifactId>sm3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>sm3</name>
<description>Spring Boot 3 和 MyBatis-Plus 3 的结合让你能够快速构建基于 Java 的企业级应用,简化了数据库操作,并减少了繁琐的配置和代码量。
Spring Boot 提供了一个轻量级、快速的开发环境,而 MyBatis-Plus 则进一步简化了与数据库交互的部分,提供了便捷的功能,适合开发现代化的企业应用程序。</description>
<properties>
<java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<mysql.version>8.0.33</mysql.version>
<lombok.version>1.18.36</lombok.version>
<mybatis-plus.version>3.5.12</mybatis-plus.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
解释Springboot+Mybatisplus能做什么
Spring Boot 3 和 MyBatis-Plus 3 是两个常用的 Java 开发框架,它们结合使用时可以让开发者更加高效地构建企业级应用程序。
1. Spring Boot 3
Spring Boot 是一个开源的 Java 框架,旨在简化 Spring 应用程序的设置和开发。Spring Boot 3 是 Spring Framework 5 的基础上进一步优化和增强的版本,它提供了一些现代化的功能和特性。主要特点包括:
- 快速开发:Spring Boot 提供了大量的默认配置,可以省去繁琐的配置工作,帮助开发者快速启动项目。
- 内嵌服务器:Spring Boot 集成了嵌入式服务器(如 Tomcat、Jetty),无需外部应用服务器,简化了部署流程。
- 自动配置:Spring Boot 会自动配置应用程序,减少了开发者手动配置的工作量。
- 微服务架构支持:Spring Boot 与 Spring Cloud 一起,可以帮助开发微服务架构。
2. MyBatis-Plus 3
MyBatis-Plus 是 MyBatis 的增强版,提供了更多的功能,旨在简化 MyBatis 的使用。MyBatis 是一个持久层框架,它通过映射文件将 Java 对象与数据库中的记录进行映射。MyBatis-Plus 通过提供一系列常用功能,减少了开发者编写重复代码的时间。MyBatis-Plus 3 是该框架的一个版本,具备以下特性:
- 无侵入设计:MyBatis-Plus 不需要修改现有的 MyBatis 配置,可以平滑地集成到现有项目中。
- 增强 CRUD 操作:MyBatis-Plus 提供了
BaseMapper
接口,支持自动生成常见的增、删、改、查操作,减少了大量重复代码。 - 条件构造器:提供了灵活且简洁的条件构造器,可以方便地进行复杂的查询操作。
- 分页插件:MyBatis-Plus 提供了自动分页功能,减少了分页查询的代码量。
- 代码生成器:MyBatis-Plus 提供了代码生成器,可以快速生成实体类、Mapper 接口、XML 配置等代码。
3. Spring Boot 3 + MyBatis-Plus 3 一起使用的优势
当 Spring Boot 和 MyBatis-Plus 结合使用时,开发者可以获得以下几方面的好处:
(1)快速开发与配置
- Spring Boot 提供了自动配置和约定优于配置的机制,而 MyBatis-Plus 又能自动处理常见的数据库操作。
- 开发者只需定义基本的
Entity
类和Mapper
接口,剩下的增、删、改、查操作都可以由 MyBatis-Plus 自动处理,极大地提高了开发效率。
(2)简化数据库操作
- 使用 MyBatis-Plus 的
BaseMapper
,开发者只需简单地继承该接口,就能获得对数据库表的基本操作(如增、删、改、查)的支持。 - 无需编写复杂的 SQL 语句,MyBatis-Plus 提供了丰富的查询构造器,方便进行复杂查询的构建。
(3)自动分页
- MyBatis-Plus 提供了分页插件,结合 Spring Boot 自动配置,可以快速实现数据库查询结果的分页功能。
- 通过简单配置,分页功能开箱即用,无需额外的代码编写。
(4)易于集成
- Spring Boot 提供了非常便捷的集成方式,MyBatis-Plus 也支持与 Spring Boot 的无缝集成。只需在
application.properties
或application.yml
文件中做简单配置,MyBatis-Plus 就可以与 Spring Boot 配合使用。
(5)提高维护性
- 使用 MyBatis-Plus 时,开发者不再需要编写大量重复的 SQL 语句和 XML 映射文件,这使得项目的代码更加简洁,易于维护。
- Spring Boot 的配置和管理也大大简化了项目结构,方便对项目进行扩展和维护。
4. 实际应用场景
当你用 Spring Boot 3 + MyBatis-Plus 3 来开发项目时,你的应用可以做到以下几个功能:
- 数据持久化:通过 MyBatis-Plus 简化数据操作。
- 快速开发:Spring Boot 提供的自动配置和快速启动特性可以帮助你快速搭建应用程序。
- 微服务支持:与 Spring Cloud 配合使用,可以帮助你构建微服务架构。
- 数据库操作优化:MyBatis-Plus 的分页插件和条件构造器可以高效地进行数据库查询和分页。
配置MySQL数据库信息和Mybatisplus的信息
# 应用名称配置
spring.application.name=sm3
# MySQL数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test_admin_123?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=guotong
spring.datasource.password=123456
spring.datasource.hikari.maximum-pool-size=5 # 设置最大连接池大小
# MyBatis配置
# mapper.xml 文件位置
mybatis-plus.mapper-locations=classpath:mapper/*.xml
# 实体类所在包路径
mybatis-plus.type-aliases-package=com.example.entity
# 配置MyBatis-Plus的SQL日志实现
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
# 启用下划线转驼峰命名规则
mybatis-plus.configuration.map-underscore-to-camel-case=true
# 逻辑删除配置
# 设置逻辑删除字段的值(非删除状态)
mybatis-plus.global-config.db-config.logic-not-delete-value=0
# 设置逻辑删除字段名
mybatis-plus.global-config.db-config.logic-delete-field=isDel
# 设置逻辑删除的值(表示已删除)
mybatis-plus.global-config.db-config.logic-delete-value=2
代码结构
1.实体类:com.gt.demo.sm3.domain.SysUser.java
package com.gt.demo.sm3.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 用户信息表(SysUser)表实体类
*
* @author makejava
* @since 2025-05-09 17:08:15
*/
@Data
@Accessors(chain = true)
@TableName(value = "sys_user", autoResultMap = true)
public class SysUser implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
@TableField(value = "user_id")
@TableId(value = "user_id", type = IdType.ASSIGN_ID)
private Long userId;
/**
* 租户编号
*/
@TableField(value = "tenant_id")
private String tenantId;
/**
* 部门ID
*/
@TableField(value = "dept_id")
private Long deptId;
/**
* 用户账号
*/
@TableField(value = "user_name")
private String userName;
/**
* 用户昵称
*/
@TableField(value = "nick_name")
private String nickName;
/**
* 用户类型(sys_user系统用户)
*/
@TableField(value = "user_type")
private String userType;
/**
* 用户邮箱
*/
@TableField(value = "email")
private String email;
/**
* 手机号码
*/
@TableField(value = "phone_number")
private String phoneNumber;
/**
* 用户性别(0男 1女 2未知)
*/
@TableField(value = "sex")
private String sex;
/**
* 头像地址
*/
@TableField(value = "avatar")
private Long avatar;
/**
* 密码
*/
@TableField(value = "password")
private String password;
/**
* 帐号状态(0正常 1停用)
*/
@TableField(value = "status")
private String status;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableField(value = "del_flag")
private String delFlag;
/**
* 最后登录IP
*/
@TableField(value = "login_ip")
private String loginIp;
/**
* 最后登录时间
*/
@TableField(value = "login_date")
private Date loginDate;
/**
* 创建部门
*/
@TableField(value = "create_dept")
private Long createDept;
/**
* 创建者
*/
@TableField(value = "create_by")
private Long createBy;
/**
* 创建时间
*/
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新者
*/
@TableField(value = "update_by")
private Long updateBy;
/**
* 更新时间
*/
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/**
* 备注
*/
@TableField(value = "remark")
private String remark;
}
2.Mapper接口:com.gt.demo.sm3.mapper.SysUserMapper.java
package com.gt.demo.sm3.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gt.demo.sm3.domain.SysUser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 用户信息表(SysUser)表数据库访问层
*
* @author makejava
* @since 2025-05-09 17:08:15
*/
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
Integer insertBatch(List<SysUser> entityList);
}
3.Service业务接口:com.gt.demo.sm3.service.SysUserService.java
package com.gt.demo.sm3.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gt.demo.sm3.domain.SysUser;
import java.util.List;
/**
* 用户信息表(SysUser)表服务接口
*
* @author makejava
* @since 2025-05-09 17:08:15
*/
public interface SysUserService extends IService<SysUser> {
/**
* Description: 批量新增
*
* @param entityList
* @author: GuoTong
* @since: 2025-05-09 17:08:15
*/
Integer saveBatchByEasyBaseMapper(List<SysUser> entityList);
}
4.Service业务接口实现:com.gt.demo.sm3.service.impl.SysUserServiceImpl.java
package com.gt.demo.sm3.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gt.demo.sm3.domain.SysUser;
import com.gt.demo.sm3.mapper.SysUserMapper;
import com.gt.demo.sm3.service.SysUserService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 用户信息表(SysUser)表服务实现类
*
* @author makejava
* @since 2025-05-09 17:08:15
*/
@Service("sysUserService")
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
@Resource
private SysUserMapper sysUserMapper;
/**
* Description: 批量新增优化版
*/
@Override
public Integer saveBatchByEasyBaseMapper(List<SysUser> entityList) {
return sysUserMapper.insertBatch(entityList);
}
}
5.Controller:com.gt.demo.sm3.controller.SysUserController.java
package com.gt.demo.sm3.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gt.demo.sm3.domain.SysUser;
import com.gt.demo.sm3.service.SysUserService;
import com.gt.demo.sm3.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
/**
* 用户信息表(SysUser)表控制层
*
* @author makejava
* @since 2025-05-09 17:08:15
*/
@RestController
@RequestMapping("sysUser")
public class SysUserController {
/**
* 服务对象
*/
@Autowired
private SysUserService sysUserService;
/**
* 分页查询数据
*
* @param sysUser 查询实体
* @return 所有数据
*/
@PostMapping("/queryLimit")
public R<Object> queryPage(@RequestParam long pageIndex, @RequestParam long pageSize, @RequestBody SysUser sysUser) {
// 分页查询
Page<SysUser> sysUserPage = new Page<>(pageIndex, pageSize);
LambdaQueryWrapper<SysUser> wrapper = Wrappers.lambdaQuery(SysUser.class).
like(StringUtils.isNotBlank(sysUser.getUserName()), SysUser::getUserName, sysUser.getUserName());
IPage<SysUser> page = this.sysUserService.page(sysUserPage, wrapper);
// 封装返回结果集
return R.ok(page.getRecords());
}
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("/queryOne/{id}")
public R<SysUser> selectOne(@PathVariable("id") Serializable id) {
return R.ok(this.sysUserService.getById(id));
}
/**
* 新增数据
*
* @param sysUser 实体对象
* @return 新增结果
*/
@PostMapping("/save")
public R<String> insert(@RequestBody SysUser sysUser) {
boolean save = this.sysUserService.save(sysUser);
String executeMsg = "新增操作,id 是:" + sysUser.getUserId();
return save ? R.ok(executeMsg) : R.fail(executeMsg);
}
/**
* 批量新增数据
*
* @param sysUserList 实体对象
* @return 新增结果
*/
@PostMapping("/saveBatch")
public R<String> insertBatch(@RequestBody List<SysUser> sysUserList) {
Integer save = this.sysUserService.saveBatchByEasyBaseMapper(sysUserList);
String executeMsg = "新增操作=>id 是:" + Arrays.toString(sysUserList.stream().map(SysUser::getUserId).toArray());
return save > 0 ? R.ok(executeMsg) : R.fail(executeMsg);
}
/**
* 修改数据
*
* @param sysUser 实体对象
* @return 修改结果
*/
@PutMapping("/update")
public R<String> update(@RequestBody SysUser sysUser) {
boolean update = this.sysUserService.updateById(sysUser);
String executeMsg = "修改操作,id 是:" + sysUser.getUserId();
return update ? R.ok(executeMsg) : R.fail(executeMsg);
}
/**
* 删除数据
*
* @param idList 主键结合
* @return 删除结果
*/
@DeleteMapping("/dels")
public R<String> delete(@RequestParam("idList") List<Long> idList) {
boolean delNumber = this.sysUserService.removeByIds(idList);
String executeMsg = "删除操作,ids 是:" + idList;
return delNumber ? R.ok(executeMsg) : R.fail(executeMsg);
}
}
6.启动类:com.gt.demo.sm3.Sm3Application.java
package com.gt.demo.sm3;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author makeJava
*/
@SpringBootApplication
@MapperScan("com.gt.demo.sm3.mapper")
public class Sm3Application {
public static void main(String[] args) {
SpringApplication.run(Sm3Application.class, args);
}
}
运行
测试接口
接口地址
http://localhost:8080/sysUser/queryOne/1
响应结果
{
"code": 200,
"msg": "操作成功",
"total": 0,
"data": {
"userId": 1,
"tenantId": "000000",
"deptId": 103,
"userName": "admin",
"nickName": "白嫖老郭",
"userType": "sys_user",
"email": "crazyLionLi@163.com",
"phoneNumber": "15888888888",
"sex": "1",
"avatar": null,
"password": "21232f297a57a5a743894a0e4a801fc3",
"status": "1",
"delFlag": "0",
"loginIp": "0:0:0:0:0:0:0:1",
"loginDate": "2024-11-26T07:20:32.000+00:00",
"createDept": 103,
"createBy": 1,
"createTime": "2024-11-12T11:33:19.000+00:00",
"updateBy": 1,
"updateTime": "2024-11-26T07:20:32.000+00:00",
"remark": "管理员"
}
}
测试数据库
CREATE TABLE `sys_user` (
`user_id` bigint NOT NULL COMMENT '用户ID',
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
`dept_id` bigint DEFAULT NULL COMMENT '部门ID',
`user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户账号',
`nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户昵称',
`user_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'sys_user' COMMENT '用户类型(sys_user系统用户)',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户邮箱',
`phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '手机号码',
`sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
`avatar` bigint DEFAULT NULL COMMENT '头像地址',
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码',
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
`login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '最后登录IP',
`login_date` datetime DEFAULT NULL COMMENT '最后登录时间',
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
`create_by` bigint DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户信息表';
INSERT INTO `test_admin_123`.`sys_user` (`user_id`, `tenant_id`, `dept_id`, `user_name`, `nick_name`, `user_type`, `email`, `phone_number`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '000000', 103, 'admin', '白嫖老郭', 'sys_user', 'crazyLionLi@163.com', '15888888888', '1', NULL, '21232f297a57a5a743894a0e4a801fc3', '1', '0', '0:0:0:0:0:0:0:1', '2024-11-26 15:20:32', 103, 1, '2024-11-12 19:33:19', 1, '2024-11-26 15:20:32', '管理员');
INSERT INTO `test_admin_123`.`sys_user` (`user_id`, `tenant_id`, `dept_id`, `user_name`, `nick_name`, `user_type`, `email`, `phone_number`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '000000', 108, 'test', '本部门及以下 密码666666', 'sys_user', '', '', '0', NULL, 'f379eaf3c831b04de153469d1bec345e', '0', '0', '127.0.0.1', '2024-11-12 19:33:19', 103, 1, '2024-11-12 19:33:19', 3, '2024-11-12 19:33:19', NULL);
INSERT INTO `test_admin_123`.`sys_user` (`user_id`, `tenant_id`, `dept_id`, `user_name`, `nick_name`, `user_type`, `email`, `phone_number`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '000000', 102, 'test1', '仅本人 密码666666', 'sys_user', '', '', '0', NULL, 'f379eaf3c831b04de153469d1bec345e', '0', '0', '127.0.0.1', '2024-11-12 19:33:19', 103, 1, '2024-11-12 19:33:19', 4, '2024-11-12 19:33:19', NULL);