还在造轮子吗,mybatis源码那十几个数据库不够用吗
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.pagination.DialectFactory;
import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;
import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect;
/**
* @author lanyanhua
* @date 2022/11/29 5:23 下午
* @description
*/
public class MybatisPlusPageTest {
public static void main(String[] args) {
DbType dbType = DbType.POSTGRE_SQL;
IDialect dialect = DialectFactory.getDialect(dbType);
DialectModel model = dialect.buildPaginationSql("select * from table", 1, 10);
System.out.println(model.getDialectSql());
//DbType.MYSQL select * from table LIMIT ?,?
//DbType.ORACLE SELECT * FROM ( SELECT TMP.*, ROWNUM ROW_ID FROM ( select * from table ) TMP WHERE ROWNUM <=?) WHERE ROW_ID > ?
//DbType.ORACLE_12C select * from table OFFSET ? ROWS FETCH NEXT ? ROWS ONLY
//DbType.SQL_SERVER select * from table OFFSET ? ROWS FETCH NEXT ? ROWS ONLY
//DbType.POSTGRE_SQL select * from table LIMIT ? OFFSET ?
}
}
万一真不够用怎么办呢
那就自己扩展一下 IDialect 类吧,写法其实就跟自己拼接sql一样。
扩展完后再加一下这个DialectFactory,dbType
DialectFactory.getDialect(dbType)