MyBatis-Plus学习——Springboot快速开始
Posted sadoshi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-Plus学习——Springboot快速开始相关的知识,希望对你有一定的参考价值。
前言
虽然MyBatis-Plus官网的指南写得比较清楚,不过在实际开发和配置中,还是遇到了不少问题,既是写给自己看,也是把一些遇到的问题记录下来。
快速开始
数据库
首先在数据库中新建一个数据库,这里我新建的叫mybatis_plus_test。
然后执行以下脚本创建User表
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)
);
接着插入数据
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');
初始化工程
通过eclipse新建一个springboot工程
配置Maven依赖,例如以下pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.sadoshi</groupId>
<artifactId>MyBatisPlusSpringboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MyBatisPlusSpringboot</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties文件配置数据库连接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_plus_test?userSSL=true&useUnicode=false&characterEncoding=UTF8&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
增加日志打印,在application.properties添加如下语句,可以输出到控制台
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
编码
springboot启动类,这里因为懒得写测试类,直接在主类上调用了。主类加上@MapperScan
注解,扫描 Mapper 文件夹
package com.sadoshi.mybatisplus.springboottest;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import com.sadoshi.mybatisplus.springboottest.component.UserComponent;
import com.sadoshi.mybatisplus.springboottest.util.SpringUtil;
@SpringBootApplication
@MapperScan("com.sadoshi.mybatisplus.springboottest.mapper")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
App app = new App();
UserComponent userComponent = SpringUtil.getBean(UserComponent.class);
userComponent.testSelect();
}
}
创建实体类User,这里的@Data用了lombok,如果集成开发环境没安装这个插件的话,可能编译报错,自行百度解决。
package com.sadoshi.mybatisplus.springboottest.model;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
编写Mapper类
public interface UserMapper extends BaseMapper<User> {
}
写一个User实体类,注入spring容器中,一会利用这个对象进行测试
package com.sadoshi.mybatisplus.springboottest.component;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.sadoshi.mybatisplus.springboottest.mapper.UserMapper;
import com.sadoshi.mybatisplus.springboottest.model.User;
@Component
public class UserComponent {
@Autowired
private UserMapper userMapper;
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
userList.forEach(System.out::println);
}
}
测试
万事俱备,可以启动测试了,执行App类,结果为下图,已经正确查出数据库中的记录
问题
之前搭这个环境,还是遇到比较多的问题。
1、启动报错java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class
这个网上很多说加上mybatis相关的依赖,但实际上是不需要的,因为现在mybatis-plus的依赖已经包含了这部分,再加上的话如果版本没对上还有可能会引起版本冲突,这个问题并不在这里。解决的办法就是把工程相关的maven仓库里的包都删了重新拉下来,就能解决了。
2、新建springboot工程后,pom文件第一行报错
这个需要在pom文件加上<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>,然后maven update一下
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
以上是关于MyBatis-Plus学习——Springboot快速开始的主要内容,如果未能解决你的问题,请参考以下文章