数据库查询

写入数据

其他用法

Misc

查询基础概念

SqlMan 始终保留可见的 SQL。Action 保存连接、SQL、参数和数据库类型;调用 query(...) 后得到 Query,由它执行语句并映射结果。

Query query = new Action(
        conn,
        "SELECT id, name FROM shop_address WHERE stat = ?"
).query(1);

单行结果

把第一行返回为 Map

Map<String, Object> row = query.one();

把第一行返回为 JavaBean:

Address address = query.one(Address.class);

查询不到记录时,这两个方法都返回 null

单值结果

只有一列的查询可以使用 oneValue(...)

Integer total = new Action(
        conn,
        "SELECT COUNT(*) FROM shop_address WHERE stat = ?"
).query(1).oneValue(Integer.class);

多行结果

List<Map<String, Object>> rows =
        new Action(conn, "SELECT * FROM shop_address ORDER BY id")
                .query()
                .list();

List<Address> addresses =
        new Action(conn, "SELECT * FROM shop_address ORDER BY id")
                .query()
                .list(Address.class);

当前多行查询没有记录时返回 null;需要集合语义的调用方可以统一转换为 Collections.emptyList()

资源管理

Query 会关闭 PreparedStatementResultSetConnection 仍由调用方负责关闭或归还连接池。