Spring、Mybatis、Mysql 通过存储过程实现分页--Mybatis实现
程序员文章站
2022-05-08 18:34:14
...
Mybatis的分页功能可不可以通过数据库中的存储过程动态执行查询来帮助实现?
Spring、Mybatis、Mysql 通过存储过程实现分页博客一共有3部分
第一部分:存储过程动态分页之存储过程实现
第二部分:存储过程动态分页之Mybatis实现
第三部分:存储过程动态分页之实际工程demo
目前这篇讲的是
第二部分:存储过程动态分页之Mybatis实现
Mybatis通过调用dynamic_paging存储过程来实现对任意查询的分页
Mybatis是可以调用存储过程的。例如,在Mybatis的mapper文件中:
分页的存储过程
问题就在于dynamic_paging该存储过程第一个参数(sql)是需要在调用前动态生成。
例如:
Mybatis 调用时的sql为:
id=10这个是由程序传入的。是一个具体的业务数据。
而这部分又是调用dynamic_paging的第一个参数。
具体的解决方法为:MyBatis Velocity,链接http://www.mybatis.org/velocity-scripting/index.html
在配置文件中动态填充业务逻辑值,然后传给存储过程
例如:
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>
推荐阅读
-
在Mysql数据库里通过存储过程实现树形的遍历
-
Spring MVC+MyBatis+MySQL实现分页功能实例
-
Spring Boot+Mybatis+Druid+PageHelper实现多数据源并分页的方法
-
在Mysql数据库里通过存储过程实现树形的遍历
-
Spring MVC+MyBatis+MySQL实现分页功能实例
-
Spring Boot+Mybatis+Druid+PageHelper实现多数据源并分页的方法
-
Spring和Mybatis整合全过程实现(idea实现)适合初学spring和mybatis
-
Python通过调用mysql存储过程实现更新数据功能示例
-
spring boot整合mybatis利用Mysql实现主键UUID的方法
-
spring集成mybatis实现mysql读写分离