关于若依框架导入MybatisPlus 3.5.6依赖报错net/sf/jsqlparser/statement/select/SelectBody

目录

1.起因

 2.解决方案

2.1.导入缺少的net.sf.jsqlparser包

2.2.使用高版本的Mybatis Plus


1.起因

 最近在若依框架内引入了Mybatis Plus 3.5.6,在IEDA运行时可以正常运行,但是jar包运行时报错,报错信息如下,可以看到关键信息为nested exception is java.lang.NoClassDefFoundError: net/sf/jsqlparser/statement/select/SelectBody

19:36:34.464 [main] ERROR o.s.b.SpringApplication - [reportFailure,870] - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: net/sf/jsqlparser/statement/select/SelectBody

观察可以看到是com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration的配置文件报错,而PageHelper是集成在MybatisPlus中的,但这个现象很奇怪,在IEDA运行下无报错信息,但是jar运行时却提示无法加载net/sf/jsqlparser/statement/select/SelectBody的bean对象,在Maven仓库检索后发现,这个依赖在2012年已转移到com.github

 2.解决方案

查阅资料和试错情况下,发现是IEDA的运行时可以正常检索到com.github.jsqlparser的包依赖路径,但是在打包jar运行的情况下,默认的包路径居然是net.sf.jsqlparser路径,推测是IEDA的运行机制和jar运行的差异化导致的路径异常问题。在后续的实验中,发现有两种解决方案

2.1.导入缺少的net.sf.jsqlparser

        <dependency>
            <groupId>net.sf.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>0.8.0</version>
        </dependency>

2.2.使用高版本的Mybatis Plus

        <!--mybatis plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.5.9</version>
        </dependency>

### MyBatisPlus 3.5.6 版本代码生成器使用教程 #### 创建基本项目 为了使用 MyBatisPlus 的代码生成器,需先创建一个基础的 Maven 或 Gradle 项目。确保项目的 `pom.xml` 文件中包含了必要的依赖项。 ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.6</version> </dependency> ``` #### 添加配置文件 在资源目录下添加并配置 `application.yml` 文件来设置数据库连接和其他必要参数[^1]。 ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver ``` #### 配置代码生成器 编写 `CodeGenerator.java` 类用于定义具体的表名、包路径以及其他选项。此部分可以根据实际需求调整[^2]。 ```java import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; public class CodeGenerator { public static void main(String[] args) { AutoGenerator mpg = new AutoGenerator(); // 设置全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("Your Name"); gc.setOpen(false); mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("password"); mpg.setDataSource(dsc); // 包信息配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.example.demo"); pc.setModuleName(null); // 如果不指定模块名称,则默认为空 mpg.setPackageInfo(pc); // 执行生成操作 mpg.execute(); } } ``` #### 测试与验证 完成上述步骤后,在 IDE 中运行 `CodeGenerator.main()` 方法即可自动生成所需的实体类、Mapper 接口和服务层接口及其实现类等文件。通过这些生成好的模板可以快速搭建起基于 MyBatis Plus 的 CRUD 功能框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值