一 数据库连接
使用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
成功