本文主要讲解如何在springboot下整合mybatis-plus,并访问mysql数据库。
表结构
现有一张 User
表,其表结构如下:
id | name | age | |
---|---|---|---|
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 |
其对应的数据库 Schema 脚本如下:
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
其对应的数据库 Data 脚本如下:
DELETE FROM user;
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');
如果执行 delete
提示 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
就先执行下 SET SQL_SAFE_UPDATES =0;
命令,接着就可以了!
创建工程
创建一个 Spring Boot 工程
参考 SpringBoot 教程&笔记 |Demo01-构建一个简单的 Web 应用程来创建
添加依赖
引入 mybatis-plus-boot-starter
、lombok
、mysql-connector-java
、freemarker
、swagger2
依赖:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
配置
在 application.yml
配置文件中添加 mysql 数据库的相关配置:
# DataSource Config
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: testuser
password:
driver-class-name: com.mysql.cj.jdbc.Driver
代码生成器
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Dao、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
MybatisPlus 配置
现在,我们添加 MybatisPlus 配置类
src/main/java/com/heardfate/springboot/demo/demo04/config/MybatisPlusConfig
开始使用
添加测试类,进行功能测试:
BIGINT UNSIGNED 映射为 BigIntger(2018-11-03 更新)
以上配置,如果数据库有字段类型为 BIGINT UNSIGNED,自动映射为 LONG 类型,,通过设置,映射为 BigIntger
BIGINT ,BIGINT UNSIGNED。
如果不是无符号类型,BIGINT(20)的取值范围为-9223372036854775808~9223372036854775807。
与 Java.lang.Long 的取值范围完全一致,可映射为 Long;
而 BIGINT(20) UNSIGNED 的取值范围是 0 ~ 18446744073709551615,其中一半的数据超出了 Long 的取值范围,需将其映射为 BigInteger。更新后完整的代码生成器代码为:
BIGINT UNSIGNED 插入报错问题(2018-11-09 更新)
如果数据库字段类型为 BIGINT UNSIGNED,映射为 BigIntger。获取数据会正常,添加数据会报错
Could not set property 'id' of 'class XXX.entity.User' with value '1060015479998566402' Cause: java.lang.IllegalArgumentException: argument type mismatch
因为没有指定 ID 生成策略,mybatis-plus 默认为 ID_WORKER,是 Long 类型!
所以指定为 BigIntger,可以通过手动设置 ID,如bean.setId(new BigInteger(IdWorker.getIdStr()));
Issues:UNSIGNED BIGINT(20)映射问题参考
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于