use of cn.hutool.db.sql.Query in project hutool by looly.
the class OracleTest method oraclePageSqlTest.
@Test
public void oraclePageSqlTest() {
Page page = new Page(0, 10);
Entity where = Entity.create("PMCPERFORMANCEINFO").set("yearPI", "2017");
final Query query = new Query(SqlUtil.buildConditions(where), where.getTableName());
query.setPage(page);
SqlBuilder find = SqlBuilder.create(null).query(query).orderBy(page.getOrders());
final int[] startEnd = page.getStartEnd();
SqlBuilder builder = //
SqlBuilder.create(null).append("SELECT * FROM ( SELECT row_.*, rownum rownum_ from ( ").append(//
find).append(" ) row_ where rownum <= ").append(//
startEnd[1]).append(//
") table_alias").append(" where table_alias.rownum_ >= ").append(//
startEnd[0]);
String ok = //
"SELECT * FROM " + //
"( SELECT row_.*, rownum rownum_ from ( SELECT * FROM PMCPERFORMANCEINFO WHERE yearPI = ? ) row_ " + //
"where rownum <= 10) table_alias where table_alias.rownum_ >= 0";
Assert.assertEquals(ok, builder.toString());
}
use of cn.hutool.db.sql.Query in project hutool by looly.
the class DialectRunner method update.
/**
* 更新数据<br>
* 此方法不会关闭Connection
*
* @param conn 数据库连接
* @param record 记录
* @param where 条件
* @return 影响行数
* @throws SQLException SQL执行异常
*/
public int update(Connection conn, Entity record, Entity where) throws SQLException {
checkConn(conn);
if (MapUtil.isEmpty(record)) {
throw new SQLException("Empty entity provided!");
}
if (MapUtil.isEmpty(where)) {
// 不允许做全表更新
throw new SQLException("Empty where provided!");
}
// 表名可以从被更新记录的Entity中获得,也可以从Where中获得
String tableName = record.getTableName();
if (StrUtil.isBlank(tableName)) {
tableName = where.getTableName();
record.setTableName(tableName);
}
final Query query = new Query(SqlUtil.buildConditions(where), tableName);
PreparedStatement ps = null;
try {
ps = dialect.psForUpdate(conn, record, query);
return ps.executeUpdate();
} finally {
DbUtil.close(ps);
}
}
Aggregations