Mybatis的分页功能可不可以通过数据库中的存储过程动态执行查询来帮助实现?
Spring、Mybatis、Mysql 通过存储过程实现分页博客一共有3部分
第一部分:存储过程动态分页之存储过程实现
第二部分:存储过程动态分页之Mybatis实现
第三部分:存储过程动态分页之实际工程demo
目前这篇讲的是
第一部分:存储过程动态分页之存储过程的实现
有了这个想法就去实践了下,初步感觉是可以的。
在Mysql中可以动态的执行SQL 例如:
CREATE PROCEDURE `dynamic_sql`(sql varchar(500))
BEGIN
PREPARE stmt FROM sql;
EXECUTE stmt;
END
调用该存储过程
CALL dynamic_sql('select * from table');
是可以正确的返回SQL执行的结果。
数据库存储过程可以动态的执行SQL,Mybatis只需要负责调用该分页的存储过程即可。
需要额外做处理的部分是:
禁止动态的SQL执行修改数据的操作。
具体实现方式是过滤Mysql修改数据的字符串,例如:update,delete等。
初步实现dynamic_paging,代码为
CREATE PROCEDURE `dynamic_paging`(sql varchar(500),page_begin int,size int)
BEGIN
set @lowercase:=lower(sql);
if(!LOCATE('call',@lowercase) && !LOCATE('delete',@lowercase) && !LOCATE('drop',@lowercase) && !LOCATE('truncate',@lowercase) && !LOCATE('update',@lowercase) && !LOCATE('delete',@lowercase) && !LOCATE('alter',@lowercase) )then
set @temp:='';
if(LOCATE('select',@lowercase))then
set @temp:=concat(@lowercase,' limit ',page_begin,',',page_end);
PREPARE stmt FROM @temp;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
end if;
end if;
END
参数及逻辑说明:
参数:
sql:动态查询的分页语句
page_begin,size:为limit的2个参数(limit page_begin,size)
逻辑:
将分页语句转为小写后,做修改数据关键字过滤,然后再分页语句最后加上 limit 操作。
调用该存储过程
CALL dynamic_sql('select * from tableA',0,10);
##或者
CALL dynamic_sql('select * from tableA,tableB where tableA.id=tableB.uid',0,10);
##或
CALL dynamic_sql('select * from tableA order by id desc',0,10);
至此数据库部分工作告一段落。
分享到:
相关推荐
通过阅读提供的"MyBatis-Plus分页查询以及自定义sql分页.pdf"文档,可以更深入地了解这些功能的具体用法和实现细节。同时,下载的"mybatis-plus-master"源码包可以帮助你理解MyBatis-Plus的内部实现,对于学习和调试...
MyBatis与Spring的整合,可以通过Spring的事务管理进行控制,实现数据访问的事务一致性。 4. **MySQL数据库**:MySQL是一款广泛使用的开源关系型数据库管理系统,支持多种操作系统,并以其高效、稳定和易用性著称。...
但是,在参考写的同时也发现有很多地方都不解不能直接用的问题,导致实际使用的过程中经常会出错,参考原来做的项目,以及网上的资料,整理了一个比较简单的自己理解的spring+spring mvc+mybatis+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 Boot项目中整合MyBatis和MySQL,实现高效的数据操作和管理。这个过程不仅简化了开发流程,也提高了项目的可维护性和扩展性。在实际开发中,还可以根据具体需求进一步优化和...
通过以上步骤,我们就完成了Spring+MyBatis的基础配置,实现了分页查询和JSON异常处理。这只是一个简单的示例,实际应用中可能还需要处理更多细节,如事务管理、缓存机制、安全性等。但这个起点已经足够帮助你理解和...
通过学习和分析这个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
总之,"springcloud集成mysql+mybatis+分页可运行demo"是一个实践性的项目,涵盖了SpringCloud服务治理、MyBatis数据库操作以及分页功能的实现,为开发者提供了完整的参考示例,有助于理解和掌握微服务架构中的数据...
总的来说,"spring+spring mvc+mybatis框架整合实现超市货物管理系统"是一个涵盖后端开发基础技能的项目,涉及了JavaEE的多个层面,从Web层的路由处理,到业务逻辑的实现,再到数据库操作,以及用户认证和分页显示等...
通过这种方式,开发者可以利用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 MVC、MyBatis和MySQL的分页功能,主要涉及后端分页逻辑的实现和前端的交互。理解分页的基本原理和组件之间的协作,能够帮助开发者高效地构建出符合需求的分页功能。在实际开发中,还可以结合...
在本项目中,"spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库",开发者利用了Spring Boot、MyBatis Plus和EasyPoi库来实现了一个功能强大的数据交互系统,允许用户将数据库中的数据...
在本文中,我们将深入探讨如何使用Spring MVC和MyBatis框架来实现MySQL数据库的分页数据查询。首先,我们需要理解分页在Web开发中的重要性,尤其是在处理大量数据时,它可以提高应用程序的性能并提供更好的用户体验...
在集成 MyBatis-Plus 到 SpringBoot 项目中,首先需要通过 IDE(如 IntelliJ IDEA)或 Spring 官网创建一个新的 SpringBoot 项目。接着,在 `pom.xml` 文件中添加必要的依赖,包括 MySQL 数据库驱动、Lombok(用于...