以前项目都是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 这样就没错