实现分页实质上就是截取查询结果,还是先贴代码,再来分析

下面是mapper.xml里面的配置

<select id="queryRoleByPage" resultMap="roleCustomeMap">
select
a.role_id,a.role_name,a.available ,
b.permission_id,
c.permission_name
from sys_role a, sys_role_permission b, sys_permission c
where a.role_id = b.role_id and b.permission_id = c.permission_id and a.role_id in (
select top ${rows} role_id from sys_role where role_id in(
select top ${pagebegin} role_id from sys_role order by role_id asc
)order by role_id desc
)order by a.role_id asc </select>

在mapper中接口的配置

  public List<SysRoleCustome> queryRoleByPage(@Param("pagebegin")int pagebegin,@Param("rows")int rows);

先说说mapper接口的配置,这里需要加上@Param这个制定参数名称,否则会出现,当使用多个参数时,必须制定,一个参数可以不指定

nested exception is org.apache.ibatis.binding.BindingException: Parameter 'rows' not found

这样的错误

接着看mapper.xml的配置,我们知道,获取mapper接口给的值的时候,我们用的是#{value},但是在这里,我先使用了这个,然后就出现这样的错误:

 Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '$@P0' 附近有语法错误。

导致这个错误的原因是什么呢?

错误解释如下:
在Java中对数据库查询时经常使用“Select Top ? * From 表名 Where 列名 = ?”的SQL语句,此时的问号是PreparedStatement预编译对象的参数占位符,需要使用setXX()系列方法对其赋值后再执行。但是,Top后面是不允许使用问号占位符的,此处的错误就是由此引起的。

按照上面的解释,如果我们用#来赋值的话,那就是预编译为“?”的,而这个导致了上面的错误,那么怎么解决呢?有两种方式

1,用$来赋值,其实就是将值写入语句中,并没有预编译,如最上面用红色加粗的那样

2,直接拼接字符串,效果和上面是一样的,原理是一样的,这个可以用在存储过程中

我是按照下面的文章找的第四种方法,关键就是结合mybatis来实现的一些细节,不注意,则会出现错误

高效的SQLSERVER分页查询(推荐)

最新文章

  1. Qt——设计颜色编辑器
  2. Java的堆(Heap)和栈(Stack)的区别
  3. PHPStorm2016如何安装主题
  4. app 摇一摇功能
  5. WPF中嵌入普通Win32程序的方法
  6. (ios7) 解决Ios7中,Navigatebar 显示在主View中,和ios6 不一致问题
  7. 在 FREEBUF 投放广告
  8. show drop down menu within/from action bar
  9. MiniSD卡是什么
  10. Android的BUG(二) - SurfaceTexture中的野指针
  11. 服务器大量的fin_wait1 状态长时间存在原因分析-1
  12. R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(二,textreuse介绍)
  13. eclipse - The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java
  14. oracle sql model从句demo
  15. leaflet简单例子,绘制多边形
  16. hibernate入门-基本配置及简单的crud操作
  17. Eclipse之maven插件link方式安装
  18. Android Webservices 返回多行多列数据(Dataset)
  19. js 冷门的 label 语法
  20. 中国标准时间、‘yyyy-MM-dd’格式时间转为时间戳

热门文章

  1. SQL Server 2008数据库备份与恢复
  2. megalo -- 网易考拉小程序解决方案
  3. netmap -- ixgbe
  4. JAVA NIO 之ByteBuffer的mark、position、limit、flip、reset,get方法介绍
  5. WPF一段代码搞定所有的点击事件
  6. [React + Functional Programming ADT] Create Redux Middleware to Dispatch Multiple Actions
  7. JMeter3.0配置
  8. Sketch 介绍
  9. visio 画图工具
  10. Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节