Mybatis的分页功能可不可以通过数据库中的存储过程动态执行查询来帮助实现?
Spring、Mybatis、Mysql 通过存储过程实现分页博客一共有3部分
第一部分:存储过程动态分页之存储过程实现
第二部分:存储过程动态分页之Mybatis实现
第三部分:存储过程动态分页之实际工程demo
目前这篇讲的是
第二部分:存储过程动态分页之Mybatis实现
Mybatis通过调用dynamic_paging存储过程来实现对任意查询的分页
Mybatis是可以调用存储过程的。例如,在Mybatis的mapper文件中:
<select id="get***" resultMap="**Map"
parameterMap="procMap" statementType="CALLABLE">
CALL proc(?,?)
</select>
<parameterMap type="java.util.Map" id="procMap">
<parameter property="param1" mode="IN" jdbcType="INTEGER" />
<parameter property="param1" mode="IN" jdbcType="INTEGER" />
</parameterMap>
分页的存储过程
CREATE PROCEDURE `dynamic_paging`(sql varchar(500),page_begin int,size int)
问题就在于dynamic_paging该存储过程第一个参数(sql)是需要在调用前动态生成。
例如:
select * from tableA,tableB where tableA.id=tableB.uid and id=10
Mybatis 调用时的sql为:
select * from tableA,tableB where tableA.id=tableB.uid and id= ?
id=10这个是由程序传入的。是一个具体的业务数据。
而这部分又是调用dynamic_paging的第一个参数。
具体的解决方法为:MyBatis Velocity,链接
http://www.mybatis.org/velocity-scripting/index.html
在配置文件中动态填充业务逻辑值,然后传给存储过程
例如:
<select id="get***" resultMap="***Map"
parameterMap="procMap" statementType="CALLABLE" lang="velocity" >
#set( $sql = 'select * from tableA,tableB where tableA.id=tableB.uid and id='+$_parameter.id )
#set( $begin=$_parameter.pageBegin)
#set( $size=$_parameter.fetchSize)
CALL dynamic_paging(@{sql},@{begin},@{size})
</select>
<parameterMap type="java.util.Map" id="procMap">
<parameter property="id" />
<parameter property="pageBegin" />
<parameter property="fetchSize"/>
</parameterMap>
分享到:
相关推荐
通过阅读提供的"MyBatis-Plus分页查询以及自定义sql分页.pdf"文档,可以更深入地了解这些功能的具体用法和实现细节。同时,下载的"mybatis-plus-master"源码包可以帮助你理解MyBatis-Plus的内部实现,对于学习和调试...
MyBatis与Spring的整合,可以通过Spring的事务管理进行控制,实现数据访问的事务一致性。 4. **MySQL数据库**:MySQL是一款广泛使用的开源关系型数据库管理系统,支持多种操作系统,并以其高效、稳定和易用性著称。...
在实际项目中,可以通过配置MyBatis的缓存机制、使用PageHelper进行分页、优化SQL语句等方式提升性能。 总之,"spring-boot-starter-mybatis-spring-boot-1.0.2.zip"压缩包提供了一个方便的Spring Boot与MyBatis...
本项目标题为“springboot整合mybatis”,描述中提到实现了MySQL数据库的简单增删改查操作,并对MyBatis的CRUD和分页功能进行了封装。以下是对这些知识点的详细解释: 1. **SpringBoot**:SpringBoot是由Pivotal...
但是,在参考写的同时也发现有很多地方都不解不能直接用的问题,导致实际使用的过程中经常会出错,参考原来做的项目,以及网上的资料,整理了一个比较简单的自己理解的spring+spring mvc+mybatis+mysql实现的分页的...
通过以上步骤,我们就完成了Spring+MyBatis的基础配置,实现了分页查询和JSON异常处理。这只是一个简单的示例,实际应用中可能还需要处理更多细节,如事务管理、缓存机制、安全性等。但这个起点已经足够帮助你理解和...
通过以上步骤,我们可以成功地在Spring Boot项目中整合MyBatis和MySQL,实现高效的数据操作和管理。这个过程不仅简化了开发流程,也提高了项目的可维护性和扩展性。在实际开发中,还可以根据具体需求进一步优化和...
通过学习和分析这个demo,开发者可以深入理解Spring、SpringMVC和MyBatis的整合方式,以及如何利用Mybatis-Paginator实现高效便捷的分页功能。这对于提升Java Web开发技能和理解企业级应用架构具有重要意义。
本文将详细介绍如何在Spring Boot项目中集成MyBatis,并基于`spring-boot-starter-mybatis-spring-boot-2.1.2.zip`这个压缩包,来解析整合过程。 1. **Spring Boot Starter MyBatis** `spring-boot-starter-...
本套源代码实现了Spring 和 mybatis 和 layui 集成情况下的基础操作,包括: 增删改查、分页、导入导出等功能。数据库为mysql,脚本在源代码根目录下,mybatis_crud.sql
总的来说,"spring+spring mvc+mybatis框架整合实现超市货物管理系统"是一个涵盖后端开发基础技能的项目,涉及了JavaEE的多个层面,从Web层的路由处理,到业务逻辑的实现,再到数据库操作,以及用户认证和分页显示等...
总之,"springcloud集成mysql+mybatis+分页可运行demo"是一个实践性的项目,涵盖了SpringCloud服务治理、MyBatis数据库操作以及分页功能的实现,为开发者提供了完整的参考示例,有助于理解和掌握微服务架构中的数据...
通过这种方式,开发者可以利用Spring的强大功能管理事务,同时享受MyBatis-Plus带来的便捷操作,如自动填充主键、条件构造器、分页查询等。在实际项目中,还可以根据需求进一步配置MyBatis-Plus的拦截器、插件等高级...
在SpringBoot项目中,整合Mybatis-Plus并实现多数据...以上就是SpringBoot整合Mybatis-Plus实现多数据源动态切换并支持分页查询的详细过程。这个实现方案能够有效地应对复杂的数据库环境,提高系统的灵活性和可扩展性。
# Spring Boot 集成 MyBatis, 分页插件 PageHelper, 通用 Mapper ## 项目依赖 ```xml <!--mybatis--> <groupId>org.mybatis.spring.boot <artifactId>mybatis-spring-boot-starter <version>1.1.1 <!...
这是一个基于Spring Boot和MyBatis框架的简单但完整的分页查询、CRUD操作及搜索功能的Web应用项目。下面将详细介绍这个项目中的关键知识点和技术。 ### Spring Boot介绍 Spring Boot是Spring框架的一个扩展,旨在...
在本项目中,"spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库",开发者利用了Spring Boot、MyBatis Plus和EasyPoi库来实现了一个功能强大的数据交互系统,允许用户将数据库中的数据...
12. **内置分页插件**:基于MyBatis物理分页机制,简化了分页查询的实现。 13. **性能分析插件**:可以输出SQL语句及其执行时间,帮助开发人员优化慢查询。 14. **全局拦截插件**:提供全表DELETE/UPDATE操作的智能...
总的来说,实现Spring MVC、MyBatis和MySQL的分页功能,主要涉及后端分页逻辑的实现和前端的交互。理解分页的基本原理和组件之间的协作,能够帮助开发者高效地构建出符合需求的分页功能。在实际开发中,还可以结合...
在集成 MyBatis-Plus 到 SpringBoot 项目中,首先需要通过 IDE(如 IntelliJ IDEA)或 Spring 官网创建一个新的 SpringBoot 项目。接着,在 `pom.xml` 文件中添加必要的依赖,包括 MySQL 数据库驱动、Lombok(用于...