mybatis,sqlserverページング


以前のプロジェクトはすべてmysqlとmybatisのもので、新しいプロジェクトの取引先はsqlserverを使うことを要求して、幸いなことに大部分のsqlはすべて同じで、しかしやはり一部のsql文は異なって、例えばページを分けます
まずsqlserverのページング原理を見てみましょう
例:10~20のデータページング
 SELECT top 10 * 
 	from tablename
 where
 	id not in (
 		select top 10 id form tablename
 	)
 order by id

mybatisではpagesize,pagestartで10,20を置き換えます
SELECT top ${pagesize} * 
 	from tablename
 where
 	id not in (
 		select top ${pagestart} id form tablename
 	)
 order by id

よくある異常1.sqlserver@P 0付近で構文エラーがあり#{var}を${var}に変更理由#{var}入力パラメータが「var」と装飾されているためnum=10のようなsql注入問題を防ぐことができ、上のsql文はSELECT TOP「10」FROM tablenameと解釈され、${var}入力パラメータを間違えてsql注入問題が発生することを直接表示します同じnum=10で、上のsql文はSELECT TOP 10 FROMと解釈されます