Idea基于Gradle构建SpringBoot3.0集成MP项目

发生缘由

  • 学习Idea基于Gradle构建SpringBoot3.0集成MP项目

运行环境

  • 电脑系统:win10
  • jdk:17.0.6
  • JVM:Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)
  • Idea:IntelliJ IDEA 2022.3.1 (Ultimate Edition)
  • Gradle:7.5.1

环境搭建

创建项目



Gradle项目结构如下:

项目的根目录:
      |-- build # 封装编译后的字节码、打的包、测试报告等信息
      |-- gradle # 封装包装器文件夹
      |    |-- wrapper
      |         |-- gradle-wrapper.jar
      |         |-- gradle-wrapper.properties
      |
      |-- src # 源码
      |    |-- main # 主工程代码
      |    |    |-- java # 业务逻辑代码
      |    |    |-- resources # 业务逻辑代码配置文件
      |    |    |-- webapp # web项目的资源目录。例如:jps/html/css/js
      |    |          |-- WEB-INF # 存放的是一些编译后的class文件和运行所必须的配置文件
      |    |                |-- web.xml文件
      |    |          |-- index.jsp/html/css/js # 存放前端资源文件
      |    |
      |    |-- test # 测试代码
      |         |-- java # 测试代码
      |         |-- resources # 测试代码所需要的配置文件
      |
      |-- gradlew
      |-- gradlew.bat # 包装器启动脚本
      |-- build.gradle # 构建脚本,类似于pom.xml
      |-- settings.gradle # 设置文件,定义项目及子项目名称信息

导入依赖

手动导入Druid和MyBatisPlus依赖

dependencies {
    // druid连接池,SpringBoot没有管理版本,我们自己导入
    implementation group: 'com.alibaba', name: 'druid', version: '1.1.16'
    // MyBatisPlus依赖,如果SpringBoot版本为3.0.2,那么MyBatisPlus需要更新至最新
    implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.5.3'
}

最后build.gradle文件如下:

plugins {
	// java插件,这是java工程
	id 'java'
	// 引入springboot插件,第一个插件是指定springboot版本号,第二个插件是进行jar包的依赖管理
	id 'org.springframework.boot' version '3.0.2'
	id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.linxuan'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
	// Maven的中央仓库
	mavenCentral()
}

dependencies {
	// 导入SpringBoot启动依赖
	implementation 'org.springframework.boot:spring-boot-starter'

	// springboot操作数据库
	// MySQL驱动
	runtimeOnly 'com.mysql:mysql-connector-j'
	// druid连接池,SpringBoot没有管理版本,我们自己导入
	implementation group: 'com.alibaba', name: 'druid', version: '1.1.16'
	// MyBatisPlus依赖,如果SpringBoot版本为3.0.2,那么MyBatisPlus需要3.5.3
	implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.5.3'

	// 测试依赖
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	// 其他依赖
	// lombok,annotationProcessor代表main下代码的注解执行器
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
}

tasks.named('test') {
	useJUnitPlatform()
}

从MP的依赖关系可以看出,通过依赖传递已经将MyBatis与MyBatis整合Spring的jar包导入,我们不需要额外在添加MyBatis的相关jar包。

功能模块

# 数据库操作
# 如果不存在linxuan数据库那么就创建
CREATE DATABASE IF NOT EXISTS linxuan CHARACTER SET utf8;
# 使用linxuan数据库
USE linxuan;

# 如果这个表存在,那么就删除
Drop TABLE IF EXISTS tb_user;
# 如果不存在tb_user表那么就创建
CREATE TABLE IF NOT EXISTS tb_user (
    id bigint(20) primary key auto_increment,
    name varchar(32) not null,
    password  varchar(32) not null,
    age int(3) not null ,
    tel varchar(32) not null
);

# 删除当前表,并创建一个新表 字段相同。用来清除当前表的所有数据
TRUNCATE TABLE tb_user;
# 插入数据
insert into tb_user values(1,'Tom','tom',3,'18866668888'), 
                          (2,'Jerry','jerry',4,'16688886666'), 
                          (3,'linxuan','linxuan666',21,'12345678910');
# 在resources目录下创建application.yaml配置文件配置
spring:
  # 配置连接数据库四要素
  datasource:
    # MySQL8驱动为com.mysql.cj.jdbc.Driver,之前的是com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/linxuan?useSSL=false
    username: root
    password: 123456
    # 使用Druid连接池技术连接数据库
    type: com.alibaba.druid.pool.DruidDataSource
package com.linxuan.pojo;

// 让查询的表明与实体类产生关联
@TableName("tb_user")
@Data
public class User {   
    private Long id;
    private String name;
    private String password;
    private Integer age;
    private String tel;
}
package com.linxuan.dao;

// Dao接口要想被容器扫描到,可以在Dao接口上添加@Mapper注解,也可以在项目启动类上添加@MapperScan注解
// 该方案的缺点是需要在每一Dao接口中添加注解
@Mapper
public interface UserDao extends BaseMapper<User>{
}
package com.linxuan;

@SpringBootApplication
// Dao接口要想被容器扫描到,可以在项目启动类上添加@MapperScan注解,也可以在Dao接口上添加@Mapper注解
// 该方法是只需要写一次,则指定包下的所有Dao接口都能被扫描到,这样@Mapper注解就不用写多次
// @MapperScan("com.linxuan.dao")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
// 测试类
@SpringBootTest
class MpDemoApplicationTests {
    @Autowired
    private UserDao userDao;
    
    @Test
    public void testGetAll() {
        List<User> userList = userDao.selectList(null);
        System.out.println(userList);
    }
}

依赖问题

MP官网:https://mp.baomidou.com/。

官网指出,SpringBoot集成MP项目,那么就要导入最新的版本:compile group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '最新版本'

我们这个项目使用的SpringBoot版本是3.0.2,如果不使用MP3.5.3及以上,使用的是3.4.1。这样会导致jar包不兼容导致出错:

Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
MyBatis No qualifying bean of type 'com.linxuan.dao.UserDao' available...
posted @ 2023-02-13 17:54  炸天帮帮主  阅读(283)  评论(0编辑  收藏  举报