【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
成功