# 基于 SQL 操作

# 参数设置

  • 方法:
  1. SQLQuery<T> args(Object... args) - 按顺序设置参数
dao.createSqlQuery("SELECT * FROM entity WHERE name LIKE ? AND enabled = ?")
    .args("%keyword%", 1)
    .list();

其他如设置命名参数可查看通用参数设置

# 查询

通过dao创建SqlQuery查询对象:

  • 方法:SQLQuery<Map<String, Object>> createSQLQuery(String sql)
SQLQuery<Map<String, Object>> query = dao.createSQLQuery("SELECT ...");

在未指定返回类型时,默认列表查询返回每项的类型为Map<String, Object>,可在创建对象时指定:

  • 方法:SQLQuery<T> createSQLQuery(String sql, Class<? extends T> resultClass)
SQLQuery<Entity> query = dao.createSQLQuery("SELECT ...", Entity.class);
List<Entity> list = query.list();

创建对象时还可同时传入参数:

  • 方法:
  1. SQLQuery<Map<String, Object>> createSQLQuery(String sql, Object... args)
  2. SQLQuery<T> createSQLQuery(String sql, Class<? extends T> resultClass, Object... args)
dao.createSQLQuery(
    "SELECT * FROM entity WHERE name LIKE ? AND enabled = ?", 
    "%keyword%", 1
);

查询对象其他方法可查看通用列表查询

# 数据更新

创建、更新及删除都属于数据更新操作,通过dao创建SqlUpdate数据更新对象:

SQLUpdate update = dao.createSQLUpdate("UPDATE ...");

创建对象后,若SQL中有占位符,可参考通用参数设置设置参数,然后再调用execute()方法执行,返回影响行数:

int affectedRows = dao.createSQLUpdate("UPDATE ...").execute();

为了简化开发,提供了不需额外调用execute(),可直接执行SQL的方法:

  1. int executeUpdate(String sql, Object... args)
  2. int executeUpdate(String sql, Map<String, Object> params)
int affectedRows = dao.executeUpdate("UPDATE ...");
顶部