跳到主要内容

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]");