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快速开始的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis-Plus入门学习笔记

Mybatis-Plus学习小项目及详细教程

Mybatis-Plus学习笔记

MyBatis-Plus使用学习

Mybatis-plus工具学习笔记---[基本概述,入门案例搭建,通用service接口使用]

#yyds干货盘点#MyBatis-plus学习笔记