Search in sources :

Example 1 with Query

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);
    }
}
Also used : Query(com.baidu.unbiz.common.genericdao.operator.Query) BaseObject(com.github.knightliao.apollo.db.bo.BaseObject)

Example 2 with Query

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());
}
Also used : Query(com.baidu.unbiz.common.genericdao.operator.Query) BaseObject(com.github.knightliao.apollo.db.bo.BaseObject)

Example 3 with Query

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();
}
Also used : Query(com.baidu.unbiz.common.genericdao.operator.Query)

Example 4 with Query

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;
}
Also used : Query(com.baidu.unbiz.common.genericdao.operator.Query)

Example 5 with Query

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();
// }
}
Also used : Query(com.baidu.unbiz.common.genericdao.operator.Query)

Aggregations

Query (com.baidu.unbiz.common.genericdao.operator.Query)11 BaseObject (com.github.knightliao.apollo.db.bo.BaseObject)5 ArrayList (java.util.ArrayList)2 Match (com.baidu.unbiz.common.genericdao.operator.Match)1 Modify (com.baidu.unbiz.common.genericdao.operator.Modify)1 Order (com.baidu.unbiz.common.genericdao.operator.Order)1 PreparedStatement (java.sql.PreparedStatement)1 SQLException (java.sql.SQLException)1 List (java.util.List)1 BatchPreparedStatementSetter (org.springframework.jdbc.core.BatchPreparedStatementSetter)1