解决Mybatis-plus和pagehelper依赖冲突

简介

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

Mybati-plus本身自带分页功能,但是我个人一直是使用pagehelper进行分页,所以在pom中添加了pagehelper依赖,但是运行项目后发现jar包冲突,面对冲突我们应该怎么解决它呢,看完如下内容便可轻松解决

先看依赖
        <!-- mbatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>

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

        </dependency>

     
        <!-- pagehelper-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
         </dependency>

运行项目

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    com.baomidou.mybatisplus.core.MybatisMapperAnnotationBuilder.getLanguageDriver(MybatisMapperAnnotationBuilder.java:369)

The following method did not exist:

    com.baomidou.mybatisplus.core.MybatisConfiguration.getLanguageDriver(Ljava/lang/Class;)Lorg/apache/ibatis/scripting/LanguageDriver;

The method's class, com.baomidou.mybatisplus.core.MybatisConfiguration, is available from the following locations:

    jar:file:/Applications/MrWang/Maven/privite_wang_repository/com/baomidou/mybatis-plus-core/3.1.2/mybatis-plus-core-3.1.2.jar!/com/baomidou/mybatisplus/core/MybatisConfiguration.class

It was loaded from the following location:

    file:/Applications/MrWang/Maven/privite_wang_repository/com/baomidou/mybatis-plus-core/3.1.2/mybatis-plus-core-3.1.2.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of com.baomidou.mybatisplus.core.MybatisConfiguration

Disconnected from the target VM, address: '127.0.0.1:55790', transport: 'socket'

Process finished with exit code 0

纠正应用程序的类路径,使其包含com.baomidou.mybatisplus.core.MybatisConfiguration的单一兼容版本

标红的部分是灰色的,看后面括号中的意思 (为冲突而生 ),这个包跟上面的包是一样的,上面是亮的,下面是灰色的,说明系统用了上面的jar包,导致下面jar包提示冲突,但为什么不用下面的,自己私下花点时间 研究一下,当然我们的目的不是解决这个冲突,因为这个被系统检测出来了,系统自动停用了一个,我们要解决系统检测不出来的冲突

引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题。(Mybatis-plus官网原话)

pagehelper依赖包中由上图得知,也是包含了MyBatis 以及 MyBatis-Spring,而MyBatis-Spring依赖冲突,系统自动用了Mybatis-plus中的MyBatis-Spring,所以我们只需要把pagehelper中的mybatis依赖删除即可,具体操作如下

在version 下面添加 exclusions依赖(排除)
 <!-- pagehelper-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

重启项目并测试

postman测试结果

 问题完美解决了

### 回答1: Mybatis-plus 可以很方便地与 PageHelper 整合,实现分页查询功能。 具体步骤如下: 1. 引入 PageHelperMybatis-plus依赖。 2. 在 Mybatis-plus 的配置文件中,配置分页插件: ``` <!-- 分页插件 --> <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"> <property name="dialectType" value="mysql"/> </bean> ``` 3. 在需要分页的方法中,使用 PageHelper.startPage 方法设置分页参数: ``` PageHelper.startPage(pageNum, pageSize); List<User> userList = userMapper.selectList(null); ``` 其中,pageNum 表示当前页码,pageSize 表示每页显示的记录数。 4. 将查询结果封装成 PageInfo 对象,返回给前端: ``` PageInfo<User> pageInfo = new PageInfo<>(userList); return Result.success(pageInfo); ``` 这样,就可以实现基于 Mybatis-plusPageHelper 的分页查询功能了。 ### 回答2: Mybatis-plus 是一款优秀的 Mybatis 增强工具,在它的基础上整合 PageHelper 可以方便进行分页查询操作,下面介绍具体的整合步骤。 1. 添加依赖 首先,在 Maven 中添加 Mybatis-plusPageHelper依赖: ``` <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>{latest-version}</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>{latest-version}</version> </dependency> ``` 其中的最新版本可以在 Maven 中央库中查找。 2. 配置 PageHelper 在 Spring Boot 的配置文件 application.yml 中进行配置: ``` pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql ``` 这里设置了数据库方言为 MySQL,reasonable 属性设置为 true 表示启用合理化分页,supportMethodsArguments 属性为 true 表示支持通过方法参数传入分页信息,params 属性为 count=countSql 表示分页插件会自动统计总数。 3. 使用 PageHelper 进行分页查询 在需要分页查询的接口方法中,使用 PageHelper.startPage 方法进行分页操作: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public PageInfo<User> getUsers(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<User> userList = userMapper.selectList(null); return new PageInfo<>(userList); } } ``` 这里的 pageNum 和 pageSize 分别表示当前页数和每页记录数,PageHelper 会自动根据这两个参数进行分页查询操作,返回的 PageInfo 对象包含分页信息以及查询结果。注意,需要将 Mybatis-plus 的查询结果转换为 List 类型,才能进行分页操作。 通过以上操作,就可以很方便地整合 Mybatis-plusPageHelper 进行分页查询了。 ### 回答3: MyBatis-Plus 是在 MyBatis 基础上的增强工具,提供了很多方便开发的功能,例如快速开发 CRUD,自动分页,租户隔离等。而显示分页数据是 Web 应用程序中经常使用的功能。为了在 MyBatis-Plus 中实现分页功能,我们可以使用 PageHelper 插件。 PageHelper 是一个 MyBatis 物理分页插件,它生成适合多种数据库的分页查询 SQL 语句,使用 PageHelper 对 SQL 语句增加了分页语句,用于显示分页查询结果。 在使用 MyBatis-Plus 整合 PageHelper 时,我们需要进行以下几个步骤: 1. 引入依赖 在 pom.xml 文件中引入 MyBatis-PlusPageHelper依赖: ``` <!-- MyBatis-Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.x.x</version> </dependency> <!-- PageHelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.x</version> </dependency> ``` 2. 配置分页插件 在 MyBatis 配置文件中增加如下分页插件的配置: ``` <plugins> <!-- 分页插件 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="dialect" value="mysql"/> <property name="reasonable" value="true"/> </plugin> </plugins> ``` 此处使用的是 PageInterceptor,是 PageHelper 的核心插件。 其中,dialect 属性决定了使用哪种数据库语言;reasonable 属性决定是否开启分页合理化。 3. 代码实现分页查询 在使用 MyBatis-Plus 进行查询时,结合 PageHelper 插件实现分页查询: ``` Page<User> page = new Page<>(1, 10); // 查询第 1 页,每页 10 条记录 IPage<User> userIPage = userService.page(page, new QueryWrapper<User>().lambda().eq(User::getGender, 1)); List<User> userList = userIPage.getRecords(); ``` 其中,page 对象作为分页查询的参数,包含了当前页码以及每页的记录数;userService.page() 方法是 MyBatis-Plus 提供的分页查询方法,第一个参数是 page 对象,第二个参数是查询条件。 4. 前端展示分页数据 在前端页面中使用分页插件进行数据的展示,PageHelper 提供了 Page 对象中 pageList 属性,可以直接获取分页后的数据集合: ``` <% List<User> userList = (List<User>) request.getAttribute("userList"); %> <table class="table table-bordered"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Gender</th> <th>Age</th> </tr> </thead> <tbody> <% for (User user : userList) { %> <tr> <td><%= user.getId() %></td> <td><%= user.getName() %></td> <td><%= user.getGender() %></td> <td><%= user.getAge() %></td> </tr> <% } %> </tbody> </table> <div class="text-center"> <% out.print(new Paging(request.getRequestURI()).getHtml(); %> </div> ``` 其中,Paging 是一个辅助类,用于展示分页条。 通过使用 MyBatis-Plus 整合 PageHelper 插件,我们可以轻松地实现分页查询功能,并且在前端页面中展示分页数据。这样,我们就可以提高数据查询的效率,同时也让用户对数据更加清晰明了。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值