前言
若依(RuoYi)框架是一款非常优秀的Java快速开发平台,基于Spring Boot和Spring MVC,集成了多种常用的开发工具。而MyBatis-Plus是对MyBatis的增强版,提供了丰富的CRUD操作和代码生成器,可以大幅提升开发效率。在本文中,我将详细介绍如何在若依框架中集成和使用MyBatis-Plus。
一、准备工作
1.1 下载若依框架
首先,从若依的官方GitHub仓库下载最新版本的框架代码,并按照文档进行基本配置和启动。下载地址:若依官网
1.2 引入MyBatis-Plus依赖
在若依项目的总目录pom.xml
文件中,引入MyBatis-Plus相关依赖:
<properties>
<!--内新加-->
<mybatis-plus.version>3.2.0</mybatis-plus.version>
</properties>
<dependencies>
<dependency>
<!--内新加-->
<!-- mybatis-plus -->
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
</dependencies>
完整的ruoyi.pom.xml
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.8.6</version>
<name>ruoyi</name>
<url>http://www.ruoyi.vip</url>
<description>若依管理系统</description>
<properties>
<!-- 内新加-->
<ruoyi.version>3.8.6</ruoyi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<druid.version>1.2.16</druid.version>
<bitwalker.version>1.21</bitwalker.version>
<swagger.version>3.0.0</swagger.version>
<kaptcha.version>2.3.3</kaptcha.version>
<pagehelper.boot.version>1.4.6</pagehelper.boot.version>
<fastjson.version>2.0.39</fastjson.version>
<oshi.version>6.4.4</oshi.version>
<commons.io.version>2.13.0</commons.io.version>
<commons.collections.version>3.2.2</commons.collections.version>
<poi.version>4.1.2</poi.version>
<velocity.version>2.3</velocity.version>
<jwt.version>0.9.1</jwt.version>
<mybatis-plus.version>3.2.0</mybatis-plus.version>
</properties>
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.15</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- 解析客户端操作系统、浏览器等 -->
<dependency>
<groupId>eu.bitwalker</groupId>
<artifactId>UserAgentUtils</artifactId>
<version>${bitwalker.version}</version>
</dependency>
<!-- pagehelper 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.boot.version}</version>
</dependency>
<!-- 获取系统信息 -->
<dependency>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>${oshi.version}</version>
</dependency>
<!-- Swagger3依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${swagger.version}</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- io常用工具类 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons.io.version}</version>
</dependency>
<!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- velocity代码生成使用模板 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<!-- collections工具类 -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons.collections.version}</version>
</dependency>
<!-- 阿里JSON解析器 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!-- Token生成与解析-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jwt.version}</version>
</dependency>
<!-- 验证码 -->
<dependency>
<groupId>pro.fessional</groupId>
<artifactId>kaptcha</artifactId>
<version>${kaptcha.version}</version>
</dependency>
<!-- 定时任务-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-quartz</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 代码生成-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-generator</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 核心模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 系统模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>${ruoyi.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>ruoyi-admin</module>
<module>ruoyi-framework</module>
<module>ruoyi-system</module>
<module>ruoyi-quartz</module>
<module>ruoyi-generator</module>
<module>ruoyi-common</module>
<module>ruoyi-syslog4j</module>
</modules>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
common模块引入mybatis-plus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
common模块注释掉如下代码
// @Bean
// public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
// {
// String typeAliasesPackage = env.getProperty("mybatis-plus.typeAliasesPackage");
// String mapperLocations = env.getProperty("mybatis-plus.mapperLocations");
// String configLocation = env.getProperty("mybatis-plus.configLocation");
// typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
// VFS.addImplClass(SpringBootVFS.class);
//
// final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
// sessionFactory.setDataSource(dataSource);
// sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
// sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
// sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
// return sessionFactory.getObject();
// }
common目录下的完整pom.xml
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.8.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-common</artifactId>
<description>
common通用工具
</description>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!-- Spring框架基本的核心工具 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- SpringWeb模块 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- spring security 安全认证 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- pagehelper 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
<!-- 自定义验证注解 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!--常用工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- JSON工具类 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- 动态数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!-- 阿里JSON解析器 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
</dependency>
<!-- io常用工具类 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
<!-- yml解析器 -->
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<!-- Token生成与解析-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<!-- Jaxb -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
<!-- redis 缓存操作 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- pool 对象池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<!-- 解析客户端操作系统、浏览器等 -->
<dependency>
<groupId>eu.bitwalker</groupId>
<artifactId>UserAgentUtils</artifactId>
</dependency>
<!-- servlet包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
</dependencies>
</project>
ruoyi-admin目录下的pom.xml
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.8.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>ruoyi-admin</artifactId>
<description>
web服务入口
</description>
<dependencies>
<!--2.lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
<!-- swagger3-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
</dependency>
<!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.6.2</version>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<!-- 核心模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<!-- 定时任务-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-quartz</artifactId>
</dependency>
<!-- 代码生成-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-generator</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-syslog4j</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.15</version>
<configuration>
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>
</project>
二、配置MyBatis-Plus
2.1 配置数据源
在application-druid.yml
中配置数据源,若依默认使用Druid数据源,无需额外配置。确保数据库连接信息正确。
2.2 配置MyBatis-Plus
在application.yml
中更新MyBatis-Plus的配置:
原内容:
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
替换为:
mybatis-plus:
mapper-locations: classpath*:mapper/**/*Mapper.xml
type-aliases-package: com.ruoyi.**.domain
global-config:
db-config:
id-type: auto
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#mybatis:
# # 搜索指定包别名
# typeAliasesPackage: com.ruoyi.**.domain
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# # 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
这些配置项主要包括Mapper文件的位置、实体类包路径,以及全局配置如逻辑删除等。
三、创建实体类和Mapper
3.1 创建实体类
在若依的项目结构中,通常在com.ruoyi.project.模块名.domain
包中创建实体类,例如:
package com.ruoyi.largescreen.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Detection {
@TableField("alarm_info")
private String alarmInfo;
@TableField("alarm_level")
private String alarmLevel;
@TableField("current_status")
private String currentStatus;
}
3.2 创建Mapper接口
在对应的mapper
包中创建Mapper接口,继承BaseMapper
,例如:
package com.ruoyi.largescreen.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.largescreen.domain.Detection;
import com.ruoyi.largescreen.domain.Middle;
import com.ruoyi.largescreen.domain.Resp;
import com.ruoyi.largescreen.domain.SyslogMessageA;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository//代表持久层
@Mapper
public interface SyslogMessaegMapper extends BaseMapper<SyslogMessageA> {
@Select("SELECT * FROM syslog_messages_host ORDER BY ID DESC LIMIT 10;")
public List<SyslogMessageA> getSyslogMessageA();
@Select("SELECT * FROM syslog_messages_host WHERE behaviourtype != '3' AND loglevel NOT IN ('通知', '信息') ORDER BY logtime DESC LIMIT 10; ")
public List<Middle> getMiddle();
@Select("SELECT * FROM syslog_gjmessage_b ORDER BY alarm_start_time DESC LIMIT 10;")
public List<Detection> getDetection();
@Select("SELECT * FROM syslog_hfmessage_b ORDER BY recovery_time DESC LIMIT 10;")
public List<Resp> getResp();
}
四、使用MyBatis-Plus进行CRUD操作
4.1 在Service层使用MyBatis-Plus
在Service层可以直接注入Mapper,并使用MyBatis-Plus提供的CRUD方法,例如:
package com.ruoyi.largescreen.service;
import com.ruoyi.largescreen.domain.Detection;
import com.ruoyi.largescreen.domain.Middle;
import com.ruoyi.largescreen.domain.Resp;
import com.ruoyi.largescreen.domain.SyslogMessageA;
import java.util.List;
/**
* 业务 服务层
*
* @author ruoyi
*/
public interface SyslogMessageAService
{
public List<SyslogMessageA> selectSyslogMessageA();
public List<Middle> getMiddle();
public List<Detection> getDetection();
public List<Resp> getResp();
}
4.1.1实现类
package com.ruoyi.largescreen.service.serviceImpl;
import com.ruoyi.largescreen.domain.Detection;
import com.ruoyi.largescreen.domain.Middle;
import com.ruoyi.largescreen.domain.Resp;
import com.ruoyi.largescreen.domain.SyslogMessageA;
import com.ruoyi.largescreen.mapper.SyslogMessaegMapper;
import com.ruoyi.largescreen.service.SyslogMessageAService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 业务字段 服务层实现
*
* @author ruoyi
*/
@Service
public class SyslogMessageAServiceImpl implements SyslogMessageAService
{
@Autowired
private SyslogMessaegMapper syslogMessaegMapper;
@Override
public List<SyslogMessageA> selectSyslogMessageA() {
//获取从数据库中查询到的数据
List<SyslogMessageA> data = syslogMessaegMapper.getSyslogMessageA();
return data;
}
@Override
public List<Middle> getMiddle() {
List<Middle> data=syslogMessaegMapper.getMiddle();
return data;
}
@Override
public List<Detection> getDetection() {
List<Detection> data=syslogMessaegMapper.getDetection();
return data;
}
@Override
public List<Resp> getResp() {
List<Resp> data=syslogMessaegMapper.getResp();
return data;
}
}
4.2 在Controller层调用Service
在Controller层可以调用Service层的方法进行CRUD操作,例如:
package com.ruoyi.largescreen.controller;
import com.ruoyi.largescreen.domain.Detection;
import com.ruoyi.largescreen.domain.Middle;
import com.ruoyi.largescreen.domain.Resp;
import com.ruoyi.largescreen.domain.SyslogMessageA;
import com.ruoyi.largescreen.service.SyslogMessageAService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 代码生成 操作处理
*
* @author ruoyi
*/
@RestController
@RequestMapping("/api/syslog")
public class SyslogMessageAController {
@Autowired
private SyslogMessageAService syslogMessageAService;
@GetMapping("/recent")
public List<SyslogMessageA> getRecentMessages() {
List<SyslogMessageA> list=syslogMessageAService.selectSyslogMessageA();
return list;
}
@GetMapping("/getmiddle")
public List<Middle> getMid() {
List<Middle> list=syslogMessageAService.getMiddle();
return list;
}
@GetMapping("/getdetection")
public List<Detection> getDetection() {
List<Detection> list=syslogMessageAService.getDetection();
return list;
}
@GetMapping("/getresponse")
public List<Resp> getResponse() {
List<Resp> list=syslogMessageAService.getResp() ;
return list;
}
}
五、总结
通过以上步骤,我们成功在若依框架中集成了MyBatis-Plus,并实现了基本的CRUD操作。MyBatis-Plus不仅简化了代码编写,还提高了开发效率,是一个非常值得在项目中使用的工具。希望本文能对大家在实际项目中集成MyBatis-Plus有所帮助。如果有任何问题,欢迎留言讨论。
参考资料
- 若依框架官方文档
- MyBatis-Plus官方文档
作者介绍
本文作者是一名Java开发者,主要从事企业级应用的开发与设计,致力于提升开发效率与代码质量。如果你对本文内容有任何疑问或建议,欢迎与我联系。