逝夕诚

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

以前项目都是mysql加mybatis的,新的一个项目客户要求用sqlserver,好在大部分sql都一样,不过还是有些sql语句不同,比如分页


首先看看sqlserver的分页原理

例:10到20的数据分页

 SELECT top 10 * 
 	from tablename
 where
 	id not in (
 		select top 10 id from tablename
 	)
 order by id


在mybatis中,用pagesize,pagestart去替换10,20

SELECT top ${pagesize} * 
 	from tablename
 where
 	id not in (
 		select top ${pagestart} id from tablename
 	)
 order by id


 常见异常
 1.sqlserver @P0 附近有语法错误
 把#{var}改成${var}  
 原因
 #{var}传入参数会被装饰成 "var"可以防止sql注入问题
 比如num=10,上面sql语句就会被解释成SELECT TOP "10" FROM tablename 这样就会报错
 ${var}传入参数会直接显示 会有发生sql注入问题
 同样num=10,上面sql语句就会被解释成SELECT TOP 10 FROM   这样就没错  

posted on 2016-04-17 17:48  逝夕诚  阅读(2997)  评论(0)    收藏  举报