2.1 查询操作
Pojo 查询(推荐)
查询单条记录
// 方式1:返回 Bean
User user = DB.Pojo.select(User.class)
.eq(User::getId, 1)
.queryBean();
// 方式2:返回 ResultMap
ResultMap result = DB.Pojo.select(User.class)
.eq(User::getId, 1)
.queryOne();
查询列表
// 查询全部
List<User> all = DB.Pojo.select(User.class).queryBeanList();
// 条件查询
List<User> users = DB.Pojo.select(User.class)
.eq(User::getStatus, 1)
.gt(User::getAge, 18)
.orderByDesc(User::getCreateTime)
.queryBeanList();
查询数量
long count = DB.Pojo.select(User.class)
.eq(User::getStatus, 1)
.count();
查询指定字段
List<User> users = DB.Pojo.select(User.class)
.select(User::getId, User::getName, User::getAge)
.eq(User::getStatus, 1)
.queryBeanList();
查询单个字段值
List<String> cities = DB.Pojo.select(User.class)
.select(User::getCity)
.queryStrList(String.class);
String citie = DB.Pojo.select(User.class)
.select(User::getCity)
.eq(User::getId, 1)
.queryStr(String.class);
Table 查询(表名方式)
基础查询
// 查询单条
ResultMap result = DB.Table.select("user").eq("id", 1).queryOne();
User user = DB.Table.select("user").eq("id", 1).queryOne(User.class);
// 查询列表
List<ResultMap> list = DB.Table.select("user").eq("status", 1).queryList();
List<User> users = DB.Table.select("user").eq("status", 1).queryList(User.class);
动态表名
String tableName = "user_" + year;
List<ResultMap> list = DB.Table.select(tableName)
.eq("status", 1)
.queryList();
原生 SQL 查询
使用 ? 占位符
// 单条结果
ResultMap result = DB.Jdbc.select("select * from user where id = ?", 1).queryOne();
User user = DB.Jdbc.select("select * from user where id = ?", 1).queryOne(User.class);
// 列表结果
List<ResultMap> list = DB.Jdbc.select(
"SELECT * FROM user WHERE status = ? AND age > ?", 1, 18
).queryList();
// 单个值
String name = DB.Jdbc.select("SELECT name FROM user WHERE id = ?", 1).queryStr();
List<Long> ids = DB.Jdbc.select("SELECT id FROM user WHERE status = ?", 1).queryLongList();
复杂查询
List<ResultMap> list = DB.Jdbc.select("""
SELECT u.*, d.name as dept_name
FROM user u
LEFT JOIN department d ON u.dept_id = d.id
WHERE u.status = ? AND d.type = ?
ORDER BY u.create_time DESC
""", 1, "tech").queryList();
结果处理
返回类型
| 方法 | 返回类型 | 说明 |
|---|---|---|
.queryBean() | Bean / null | 单条记录,无则返回 null |
.queryOne() | ResultMap / null | 单条记录,Map 形式 |
.queryBeanList() | List<Bean> | 列表 |
.queryList() | List<ResultMap> | 列表,Map 形式 |
.count() | long | 数量 |
.queryBeanPage() | Page<Bean> | 分页结果 |
.queryPage() | Page<ResultMap> | 分页结果,Map 形式 |
ResultMap 深度取值
ResultMap result = DB.Table.select("user").eq("id", 1).queryOne();
// 基础取值
String name = result.getStr("name");
Integer age = result.getInt("age", 0);
// 深度取值(嵌套 JSON 字段)
String city = result.getStr("address.city", "未知");
List<Order> orders = result.getList("orders", Order.class);
// 负数索引
String lastTag = result.getStr("tags[-1]");