mybatis-flex/docs/zh/db-row.md
2023-04-07 16:05:23 +08:00

2.3 KiB
Raw Blame History

Db + Row 工具的使用

Db + Row 工具类,提供了在 Entity 实体类之外的数据库操作能力。使用 Db + Row 时,无需对数据库表进行映射, Row 是一个 HashMap 的子类,相当于一个通用的 Entity。以下为 Db + Row 的一些示例:

//使用原生 SQL 插入数据
String sql = "insert into tb_account(id,name) value (?, ?)";
Db.insertBySql(sql,1,"michael");

//使用 Row 插入数据
Row account = new Row();
account.set("id",100);
account.set(ACCOUNT.USER_NAME,"Michael");
Db.insert("tb_account",account);


//根据主键查询数据
Row row = Db.selectOneById("tb_account","id",1);

//Row 可以直接转换为 Entity 实体类,且性能极高
Account account = row.toEntity(Account.class);


//查询所有大于 18 岁的用户
String listsql = "select * from tb_account where age > ?"
List<Row> rows = Db.selectListBySql(sql,18);


//分页查询:每页 10 条数据,查询第 3 页的年龄大于 18 的用户
QueryWrapper query = QueryWrapper.create()
        .where(ACCOUNT.AGE.ge(18));
Page<Row> rowPage = Db.paginate("tb_account",3,10,query);

Db 工具类还提供了更多 增、删、改、查和分页查询等方法。

具体参考: Db.java

Row 转换为 Entity

Row row = Db.selectOneById("tb_account","id",1);
Account entity = row.toEntity(Account.class);

Row 字段转化为驼峰风格

Row row = Db.selectOneById("tb_account","id",1);
Map result = row.toCamelKeysMap();

Row 字段转换为下划线风格

Row row = Db.selectOneById("tb_account","id",1);
Map result = row.toUnderlineKeysMap();

Row 插入时,设置主键生成方式

ID 自增

// ID 自增
Row row = Row.ofKey(RowKey.ID_AUTO);
row.set(ACCOUNT.USER_NAME,"Michael");

Db.insert("tb_account",row);

ID 为 UUID

// ID 为 uuid
Row row = Row.ofKey(RowKey.ID_UUID);
row.set(ACCOUNT.USER_NAME,"Michael");

Db.insert("tb_account",row);

自定义 Row 主键生成方式

// 自定义 Row Key整个应用定义一个常量即可
RowKey myRowKey = RowKey.of("id", KeyType.Generator, "uuid", true);

// 使用自定义的 RowKey
Row row = Row.ofKey(myRowKey);
row.set(ACCOUNT.USER_NAME,"Michael");

Db.insert("tb_account",row);