update docs

This commit is contained in:
开源海哥 2023-03-12 10:59:51 +08:00
parent 987f65d65a
commit da1d8ec93d
3 changed files with 117 additions and 1 deletions

View File

@ -2,6 +2,8 @@ package com.mybatisflex.test;
import com.mybatisflex.core.dialect.CommonsDialectImpl; import com.mybatisflex.core.dialect.CommonsDialectImpl;
import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.dialect.IDialect;
import com.mybatisflex.core.dialect.KeywordWrap;
import com.mybatisflex.core.dialect.LimitOffsetProcesser;
import com.mybatisflex.core.querywrapper.CPI; import com.mybatisflex.core.querywrapper.CPI;
import com.mybatisflex.core.querywrapper.QueryWrapper; import com.mybatisflex.core.querywrapper.QueryWrapper;
import com.mybatisflex.core.table.TableInfo; import com.mybatisflex.core.table.TableInfo;
@ -195,6 +197,47 @@ public class AccountSqlTester {
} }
@Test
public void testLimitOffset() {
QueryWrapper queryWrapper = QueryWrapper.create()
.select()
.from(ACCOUNT)
.orderBy(ACCOUNT.ID.desc())
.limit(10)
.offset(20);
IDialect dialect1 = new CommonsDialectImpl();
String sql1 = dialect1.buildSelectSql(queryWrapper);
System.out.println(sql1);
IDialect dialect2 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE);
String sql2 = dialect2.buildSelectSql(queryWrapper);
System.out.println(sql2);
IDialect dialect3 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DB2);
String sql3 = dialect3.buildSelectSql(queryWrapper);
System.out.println(sql3);
IDialect dialect4 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.POSTGRESQL);
String sql4 = dialect4.buildSelectSql(queryWrapper);
System.out.println(sql4);
IDialect dialect5 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.INFORMIX);
String sql5 = dialect5.buildSelectSql(queryWrapper);
System.out.println(sql5);
IDialect dialect6 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.SYBASE);
String sql6 = dialect6.buildSelectSql(queryWrapper);
System.out.println(sql6);
IDialect dialect7 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.FIREBIRD);
String sql7 = dialect7.buildSelectSql(queryWrapper);
System.out.println(sql7);
}
@Test @Test
public void testrSelectLimitSql() { public void testrSelectLimitSql() {
QueryWrapper queryWrapper = QueryWrapper.create() QueryWrapper queryWrapper = QueryWrapper.create()

View File

@ -270,7 +270,43 @@ QueryWrapper queryWrapper = QueryWrapper.create()
// LEFT JOIN tb_article // LEFT JOIN tb_article
// ON tb_account.id = tb_article.account_id // ON tb_account.id = tb_article.account_id
// WHERE tb_account.age >= ? // WHERE tb_account.age >= ?
```
### limit... offset
```java
QueryWrapper queryWrapper = QueryWrapper.create()
.select()
.from(ACCOUNT)
.orderBy(ACCOUNT.ID.desc())
.limit(10)
.offset(20);
// MySql:
// SELECT * FROM `tb_account` ORDER BY `id` DESC LIMIT 20, 10
// postgreSQL:
// SELECT * FROM "tb_account" ORDER BY "id" DESC LIMIT 20 OFFSET 10
// informix:
// SELECT SKIP 20 FIRST 10 * FROM "tb_account" ORDER BY "id" DESC
// oracle:
// SELECT * FROM (SELECT TEMP_DATAS.*,
// ROWNUM RN FROM (
// SELECT * FROM "tb_account" ORDER BY "id" DESC)
// TEMP_DATAS WHERE ROWNUM <=30)
// WHERE RN >20
// db2:
// SELECT * FROM "tb_account" ORDER BY "id" DESC OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY
// sybase:
// SELECT TOP 10 START AT 30 * FROM "tb_account" ORDER BY "id" DESC
// firebird:
// SELECT * FROM "tb_account" ORDER BY "id" DESC ROWS 20 TO 30
``` ```
### Questions ### Questions

View File

@ -309,6 +309,43 @@ QueryWrapper queryWrapper=QueryWrapper.create()
// WHERE tb_account.age >= ? // WHERE tb_account.age >= ?
``` ```
### limit... offset
```java
QueryWrapper queryWrapper = QueryWrapper.create()
.select()
.from(ACCOUNT)
.orderBy(ACCOUNT.ID.desc())
.limit(10)
.offset(20);
// MySql:
// SELECT * FROM `tb_account` ORDER BY `id` DESC LIMIT 20, 10
// postgreSQL:
// SELECT * FROM "tb_account" ORDER BY "id" DESC LIMIT 20 OFFSET 10
// informix:
// SELECT SKIP 20 FIRST 10 * FROM "tb_account" ORDER BY "id" DESC
// oracle:
// SELECT * FROM (SELECT TEMP_DATAS.*,
// ROWNUM RN FROM (
// SELECT * FROM "tb_account" ORDER BY "id" DESC)
// TEMP_DATAS WHERE ROWNUM <=30)
// WHERE RN >20
// db2:
// SELECT * FROM "tb_account" ORDER BY "id" DESC OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY
// sybase:
// SELECT TOP 10 START AT 30 * FROM "tb_account" ORDER BY "id" DESC
// firebird:
// SELECT * FROM "tb_account" ORDER BY "id" DESC ROWS 20 TO 30
```
### 存在疑问? ### 存在疑问?
**疑问 1QueryWrapper 是否可以在分布式项目中通过 RPC 传输?** **疑问 1QueryWrapper 是否可以在分布式项目中通过 RPC 传输?**