【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-center
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/lflusers
    username: root
    password: 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 {

    @Autowired
    private UserMapper userMapper;

    @Test
    void 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 {

    @Autowired
    private UserService userService;

    @Test
    void 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-center
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/lflusers
    username: root
    password: root
server:
  port: 8080
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false

成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马武寨山的猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值