use of com.baidu.unbiz.common.genericdao.operator.Query in project disconf by knightliao.
the class GenericDao method create.
public ENTITY create(ENTITY entity, InsertOption option) {
// 如果空值则返回
if (entity == null) {
recordLog(" param entity is null!");
return null;
}
// 如果需要DAO层代理生成新ID
if (sequenceName != null) {
entity.setId(getNextId());
}
// 判断是否为自动设置的ID
KEY key = entity.getId();
boolean autoGeneratedKey = (Number.class.isAssignableFrom(orMapping.getKeyClass()) && (key == null || (Long.parseLong(key.toString()) == 0)));
// 获取insert语句
@SuppressWarnings("unchecked") Query query = queryGenerator.getCreateQuery(autoGeneratedKey, false, option, entity);
final String sql = query.getSql();
final List<Object> params = query.getParams();
// 如果非自动生成key则返回
if (!autoGeneratedKey) {
int rowCount = executeSQL(sql, params);
return rowCount == 1 ? entity : null;
// 如果自动生成key,生成KeyHolder
} else {
return createAndFetchKey(entity, sql, params);
}
}
use of com.baidu.unbiz.common.genericdao.operator.Query in project disconf by knightliao.
the class GenericDao method find.
/**
* 根据查询条件获取结果集列表
*
* @param matches
* @param order
* @param offset
* @param limit
*
* @return
*/
public List<ENTITY> find(List<Match> matches, List<Order> order, int offset, int limit) {
// FIXME
Query operate = queryGenerator.getSelectQuery(matches, (order == null) ? null : order.toArray(new Order[order.size()]));
String sql = operate.getSql();
List<Object> params = operate.getParams();
if (offset != 0 || limit != 0) {
sql = sql + " limit ?, ?";
params.add(offset);
params.add(limit);
}
// 执行操作
return findBySQL(sql, operate.getParams());
}
use of com.baidu.unbiz.common.genericdao.operator.Query in project disconf by knightliao.
the class GenericDao method createBatchQuick.
public int createBatchQuick(List<ENTITY> entities) {
if (entities == null || entities.size() == 0) {
recordLog(" param entities is empty!");
return 0;
}
// 如果需要DAO层设置ID
if (sequenceName != null) {
for (ENTITY e : entities) {
e.setId(getNextId());
}
}
// 以第一个元素确定是否自动生成key
KEY key = entities.get(0).getId();
// 获取insert语句
Query query = queryGenerator.getCreateQuery(entities, key == null, true, null);
// 执行批量插入操作
executeSQL(query.getSql(), query.getParams());
return entities.size();
}
use of com.baidu.unbiz.common.genericdao.operator.Query in project disconf by knightliao.
the class GenericDao method insert.
public int[] insert(List<ENTITY> entities, InsertOption option) {
if (entities == null || entities.size() == 0) {
recordLog(" param entities is empty!");
return null;
}
// 如果需要DAO层设置ID
if (sequenceName != null) {
for (ENTITY e : entities) {
e.setId(getNextId());
}
}
// 以第一个元素确定是否自动生成key
KEY key = entities.get(0).getId();
// boolean autoGenerateKey = key == null;
// 获取insert语句
Query query = queryGenerator.getCreateQuery(entities, key == null, false, option);
// FIXME 先临时这样改下
int size = query.getParams().size();
int paramPerEntity = size / entities.size();
int i = 0;
int[] result = new int[entities.size()];
for (int index = 0, length = entities.size(); index < length; index++) {
int updated = createAndFetchUpdateRow(entities.get(index), query.getSql(), query.getParams().subList(i, i += paramPerEntity));
result[index] = updated;
}
return result;
}
use of com.baidu.unbiz.common.genericdao.operator.Query in project disconf by knightliao.
the class GenericDao method create.
public int create(List<ENTITY> entities, InsertOption option) {
if (entities == null || entities.size() == 0) {
recordLog(" param entities is empty!");
return 0;
}
// 如果需要DAO层设置ID
if (sequenceName != null) {
for (ENTITY e : entities) {
e.setId(getNextId());
}
}
// 以第一个元素确定是否自动生成key
KEY key = entities.get(0).getId();
// boolean autoGenerateKey = key == null;
// 获取insert语句
Query query = queryGenerator.getCreateQuery(entities, key == null, false, option);
// FIXME 先临时这样改下
int size = query.getParams().size();
int paramPerEntity = size / entities.size();
int i = 0;
for (ENTITY entity : entities) {
createAndFetchKey(entity, query.getSql(), query.getParams().subList(i, i += paramPerEntity));
}
return entities.size();
// if(!autoGenerateKey){
// // 执行批量插入操作
// executeSQL(query.getSql(), query.getParams());
// return entities.size();
// }else{
// int size = query.getParams().size();
// int paramPerEntity = size / entities.size();
// int i = 0;
// for(ENTITY entity : entities){
// createAndFetchKey(entity, query.getSql(),
// query.getParams().subList(i, i += paramPerEntity));
// }
// return entities.size();
// }
}
Aggregations