数据的创建、更新和删除
插入记录
执行 INSERT 时使用 create(params).execute(...):
String sql = "INSERT INTO shop_address (name, address, phone) VALUES (?, ?, ?)";
CreateResult<Serializable> result =
new Action(conn, sql)
.create("公司", "Tree Road", "3412")
.execute(false);
isOk() 表示是否插入成功。
获取数据库生成的主键
数据库生成主键时传入 true,同时指定期望的 Java 类型:
CreateResult<Long> result =
new Action(conn,
"INSERT INTO shop_address (name, address) VALUES (?, ?)")
.create("家", "Lake Road")
.execute(true, Long.class);
Long id = result.getNewlyId();
SqlMan 会把 JDBC 返回的主键转换为指定数值类型,并拒绝溢出或丢失小数的转换。
更新记录
UpdateResult result =
new Action(conn,
"UPDATE shop_address SET name = ? WHERE id = ?")
.update("总公司", 8)
.execute();
int affected = result.getEffectedRows();
只要 JDBC 执行过程没有异常,即使影响行数为 0,也会被视为执行成功。
按 ID 删除
UpdateResult result =
new Action(conn).delete("shop_address", "id", 8);
这是物理删除。逻辑删除应执行 UPDATE,修改相应的状态字段。
表名、列名和原始条件不能作为 JDBC 参数绑定。标识符和 SQL 片段必须由应用代码控制,不要直接拼接不可信的请求内容。