当前位置: 首页 > news >正文

【Mybatis-plus】【MybatisX】:Mybatis-plus快速上手 and MybatisX插件的使用——加强开发效率

一 数据库连接

使用idea自带的数据库第三方工具连接一下,选择mysql,输入相应的账号密码和端口号,下载驱动等

二 Mybatis-plus快速上手

右击数据库点击new,后点击schema创建要给数据库

右击创建的数据库new一个 Console

创建一个用户表

DROP TABLE IF EXISTS `user`;CREATE TABLE `user`
(id BIGINT NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (id)
);

成功

增加用户数据

INSERT INTO `user` (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

成功

pom文件中加入依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version>
</dependency>

将配置文件改为yml

配置yml文件设置了程序名称,连接数据库的驱动,地址,账号密码,还有后端启动的端口号

url 最后是自己数据库的名称啊,别和我一样,看看自己是啥

spring:application:name: user-centerdatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/lflusersusername: rootpassword: root
server:port: 8080

删除程序里的demo,创建一个mapper文件夹

在启动程序UserCenterBackedApplication里面加上扫包的注解 @MapperScan("com.lfl.usercenterbacked.mapper")

注解:@MapperScan 用于指定要扫描的包路径,自动扫描该路径下的 Mapper 接口,并将这些 Mapper 接口注册为 Spring 的 Bean。这使得你不需要手动声明每一个 Mapper 实例化,而是可以通过自动扫描来简化配置。

@SpringBootApplication
@MapperScan("com.lfl.usercenterbacked.mapper")
public class UserCenterBackedApplication {public static void main(String[] args) {SpringApplication.run(UserCenterBackedApplication.class, args);}}

创建model文件夹,用来存放实体类,并且创建一个User的实体类

package com.lfl.usercenterbacked.model;import lombok.Data;@Data
public class User {private Long id;private String name;private Integer age;private String email;
}

创建UserMapper接口继承BaseMapper<User>

注解:其实对于mybatis来说这里面应该写User相关数据库操作的接口,但是因为接入了mybatisplus,也就是继承BaseMapper<User>,这里面都开发好了,不用我们去写,直接调用就可以。后面的这个<User>是泛型

package com.lfl.usercenterbacked.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lfl.usercenterbacked.model.User;public interface UserMapper extends BaseMapper<User> {
}

编写测试代码

注解:自动注入

package com.lfl.usercenterbacked;import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.lfl.usercenterbacked.mapper.UserMapper;
import com.lfl.usercenterbacked.model.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class UserCenterBackedApplicationTests {@Autowiredprivate UserMapper userMapper;@Testvoid contextLoads() {System.out.println(("----- selectAll method test ------"));List<User> userList = userMapper.selectList(null);Assert.isTrue(5 == userList.size(), "");userList.forEach(System.out::println);}}

结果

三 数据库设计

用户表:

id (主键)bigint

username 昵称 varchar

userAccount 账号

avatarUrl 头像 varchar

gender 性别 tinyint

userPassword 密码 varchar

phone 电话 varchar

email 邮箱 varchar

userStatus 是否有效(比如账号封禁,比如账号冻结) tinyint 默认为 0 正常,1 封禁

createTime 创建时间 (数据插入时间) datetime

updateTime 跟新时间 (数据更新时间)datetime

isDelete 是否删除(逻辑删除)tinyint 默认是 0

删除整合mybatisplus的示例user表

DROP TABLE user;

使用如下创建user表

CREATE TABLE `user` (`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,`username` varchar(255) NOT NULL,`userAccount` varchar(255) NOT NULL,`avatarUrl` varchar(255) DEFAULT NULL,`gender` tinyint(1) NOT NULL,`userPassword` varchar(255) NOT NULL,`phone` varchar(20) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,`userStatus` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0表示正常,1表示封禁',`createTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,`updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,`isDelete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0表示未删除,1表示已删除(逻辑删除)',PRIMARY KEY (`id`),UNIQUE KEY `unique_username` (`username`),UNIQUE KEY `unique_userAccount` (`userAccount`),UNIQUE KEY `unique_email` (`email`),UNIQUE KEY `unique_phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

四 MybatisX的使用

1 规整目录

2 实现基本的数据库操作(操作user表)

模型user 对象 => 和数据库的字段关联

使用mybatisX插件从数据库生成实体类 mapper service等

安装完成之后右击数据库中的数据表

因为咱们选择了单独的一个generator路径,就生成了如下,检查代码后,迁移到自己的mapper model srvice 里面

迁移完成如下

编写测试类

package com.lfl.usercenterbacked;
import java.util.Date;import com.lfl.usercenterbacked.model.domain.User;
import com.lfl.usercenterbacked.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class UserCenterBackedApplicationTests {@Autowiredprivate UserService userService;@Testvoid contextLoads() {User user = new User();user.setId(0L);user.setUsername("lfl");user.setUserAccount("123");user.setAvatarUrl("");user.setGender(0);user.setUserPassword("123");user.setPhone("123");user.setEmail("123");user.setUserStatus(0);userService.save(user);}}

然后报如下错误

因为实体类采用了驼峰命名法,所以mybatisplus自动将UserAccount装化成了use_account,在数据库中找不到这个字段

所以修改mybatisplus配置

spring:application:name: user-centerdatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/lflusersusername: rootpassword: root
server:port: 8080
mybatis-plus:configuration:map-underscore-to-camel-case: false

成功

相关文章:

  • 电磁铁选用和设计需要考虑的哪些方面
  • Meta Orion 原型的生产成本约为 10,000 美元
  • 美国惊曝超大规模信息泄露事件!超1亿人受到影响
  • 【高阶数据结构】平衡二叉树(AVL)的插入(4种旋转方法+精美图解+完整代码)
  • windows10录屏工具,四款新手必备软件!
  • Springboot Mybatis XML配置文件
  • 【计算机网络 - 基础问题】每日 3 题(二十八)
  • Qualcomm AI Hub模型优化1: Whisper-Base-En导出及问题解决
  • c++模拟真人鼠标轨迹算法
  • Python项目Flask框架整合Redis
  • 国内旅游:现状与未来趋势分析
  • 【怎样基于Okhttp3来实现各种各样的远程调用,表单、JSON、文件、文件流等待】
  • 小程序电量
  • 一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测
  • 高防服务器有用吗?租用价格一般多少
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 03Go 类型总结
  • Android单元测试 - 几个重要问题
  • Android系统模拟器绘制实现概述
  • Asm.js的简单介绍
  • eclipse的离线汉化
  • gitlab-ci配置详解(一)
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • node和express搭建代理服务器(源码)
  • Puppeteer:浏览器控制器
  • python3 使用 asyncio 代替线程
  • React Transition Group -- Transition 组件
  • webpack入门学习手记(二)
  • 少走弯路,给Java 1~5 年程序员的建议
  • 时间复杂度与空间复杂度分析
  • 新手搭建网站的主要流程
  • 正则表达式小结
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • #微信小程序:微信小程序常见的配置传值
  • (06)金属布线——为半导体注入生命的连接
  • (C语言)fread与fwrite详解
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (论文阅读30/100)Convolutional Pose Machines
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (原)Matlab的svmtrain和svmclassify
  • (转) Face-Resources
  • (转)ObjectiveC 深浅拷贝学习
  • .net core使用ef 6
  • .Net 代码性能 - (1)
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET成年了,然后呢?
  • .net经典笔试题