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...