Search in sources :

Example 6 with Query

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());
}
Also used : Query(cn.hutool.db.sql.Query) SqlBuilder(cn.hutool.db.sql.SqlBuilder) Test(org.junit.Test)

Example 7 with Query

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);
    }
}
Also used : Query(cn.hutool.db.sql.Query) SQLException(java.sql.SQLException) PreparedStatement(java.sql.PreparedStatement)

Aggregations

Query (cn.hutool.db.sql.Query)7 PreparedStatement (java.sql.PreparedStatement)4 SQLException (java.sql.SQLException)4 NumberHandler (cn.hutool.db.handler.NumberHandler)1 SqlBuilder (cn.hutool.db.sql.SqlBuilder)1 Test (org.junit.Test)1