use of org.nutz.dao.sql.Sql in project nutz by nutzam.
the class SqlTemplate method queryForObject.
/**
* 执行一个SQL查询操作,结果为给定实体的对象。
*
* @param sql
* 包含变量占位符的SQL
* @param vars
* 变量map,无参数时,可为null
* @param params
* 参数map,无参数时,可为null
* @param entity
* 实体类型
*
* @return 对象,无查询结果时返回null
*/
public <T> T queryForObject(String sql, Map<String, Object> vars, Map<String, Object> params, Entity<T> entity) {
Sql sqlObj = createSqlObj(sql, params);
sqlObj.setCallback(Sqls.callback.entity());
sqlObj.setEntity(entity);
execute(sqlObj, vars, params);
return sqlObj.getObject(entity.getType());
}
use of org.nutz.dao.sql.Sql in project nutz by nutzam.
the class SqlTemplate method update.
/**
* 执行一个SQL更新操作(如插入,更新或删除语句)。
*
* @param sql
* 包含变量占位符的SQL
* @param vars
* 变量map,无参数时,可为null
* @param params
* 参数map,无参数时,可为null
*
* @return SQL 语句所影响的行数
*/
public int update(String sql, Map<String, Object> vars, Map<String, Object> params) {
Sql sqlObj = createSqlObj(sql, params);
execute(sqlObj, vars, params);
return sqlObj.getUpdateCount();
}
use of org.nutz.dao.sql.Sql in project nutz by nutzam.
the class SqlTemplate method batchUpdate.
/**
* 执行SQL批量更新操作(如插入,更新或删除语句)。
*
* @param sql
* 包含变量占位符的SQL
* @param vars
* 变量map,无参数时,可为null
* @param batchValues
* 批量更新参数集合
*
* @return SQL 语句所影响的行数
*/
public int batchUpdate(String sql, Map<String, Object> vars, List<Map<String, Object>> batchValues) {
Sql sqlObj = null;
if (batchValues != null && batchValues.size() > 0) {
sqlObj = createSqlObj(sql, batchValues.get(0));
for (Map<String, Object> params : batchValues) {
Map<String, Object> newParams = paramProcess(params);
sqlObj.params().putAll(newParams);
sqlObj.addBatch();
}
dao.execute(sqlObj);
} else {
sqlObj = createSqlObj(sql, null);
execute(sqlObj, vars, null);
}
return sqlObj.getUpdateCount();
}
use of org.nutz.dao.sql.Sql in project nutz by nutzam.
the class SqlTemplate method queryForList.
/**
* 执行一个SQL查询操作,结果为一组对象。
*
* @param sql
* 包含变量占位符的SQL
* @param vars
* 变量map,无参数时,可为null
* @param params
* 参数map,无参数时,可为null
* @param classOfT
* 对象类型
*
* @return 对象列表,无查询结果时返回长度为0的List对象
*/
public <T> List<T> queryForList(String sql, Map<String, Object> vars, Map<String, Object> params, final Class<T> classOfT) {
Sql sqlObj = createSqlObj(sql, params);
sqlObj.setCallback(new SqlCallback() {
public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
List<T> list = new ArrayList<T>();
while (rs.next()) {
T result = Castors.me().castTo(rs.getObject(1), classOfT);
list.add(result);
}
return list;
}
});
execute(sqlObj, vars, params);
return sqlObj.getList(classOfT);
}
use of org.nutz.dao.sql.Sql in project nutz by nutzam.
the class DaoUpTest method test_custom_sql.
/**
* 自定义SQL, 进阶, 自定义回调
*/
@Test
public void test_custom_sql() {
Dao dao = DaoUp.me().dao();
// 建表,准备数据
dao.create(SystemUser.class, true);
SystemUser user = new SystemUser();
user.setName("wendal");
dao.fastInsert(user);
user = new SystemUser();
user.setName("zozoh");
dao.fastInsert(user);
Sql sql = Sqls.create("select id from $table $condition");
// 设置之后, setCondition里面的条件就可以用java属性名了
sql.setEntity(dao.getEntity(SystemUser.class));
sql.setCondition(Cnd.where("name", "=", "zozoh"));
// 只是为了演示变量设置, 你可以直接在sql里写好表名
sql.vars().set("table", dao.getEntity(SystemUser.class).getTableName());
sql.getContext().attr("hi-我是自定义上下文变量", "哈哈哈哈");
sql.setCallback(new // 同样的功能可以用内置的Sqls.callback.integer();
SqlCallback() {
public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
assertEquals(sql.getContext().attr("hi-我是自定义上下文变量"), "哈哈哈哈");
if (rs.next())
return rs.getInt(1);
return -1;
// 这里的conn和rs不需要用户代码关闭哦.
// 你可以通过sql.
}
});
dao.execute(sql);
// 还有sql.getXXXX等等方法等着你哦
assertEquals(2, sql.getInt());
}
Aggregations