public boolean save(M... models) { return save(Arrays.asList(models)); }
/** * Delete model. */ public boolean delete() { Object[] ids = getPrimaryValues(getTableMeta()); return deleteByIds(ids); }
/** * Execute sql update */ public boolean execute(String... sqls) { return execute(Arrays.asList(sqls)); }
/** * 根据where条件查询model集合 * * @param where 条件 * @param params 参数 * @return list */ public List<M> findBy(String where, Object... params) { return find(getDialect().select(getTableMeta().getTableName(), getAlias(), where), params); }
/** * 查询全部的model数据 * * @return model 集合 */ public List<M> findAll() { return find(getDialect().select(getTableMeta().getTableName())); }
return firstModel.save(); TableMeta tableMeta = firstModel.getTableMeta(); firstModel.purgeCache(); if (!generated && generator != null && get(generatedKey) == null) { firstModel.set(generatedKey, generator.generateKey()); DataSourceMeta dsm = firstModel.getDataSourceMeta(); boolean showSql = dsm.isWriteShowSql(); Dialect dialect = dsm.getDialect(); columns = firstModel.getModifyAttrNames(generatedKey); } else { columns = firstModel.getModifyAttrNames(); if (!generated && columns[j].equals(generatedKey) && models.get(i).get(generatedKey) == null) { models.get(i).set(columns[j], generator.generateKey()); value = models.get(i).get(name); conversion = models.get(i).getConversion(name); if (conversion != null) { value = conversion.write(value); int[] result = null; try { conn = getWriteConnection(dsm); autoCommit = conn.getAutoCommit();
TableMeta tableMeta = getTableMeta(); purgeCache(); if (!generated && generator != null && get(generatedKey) == null) { set(generatedKey, generator.generateKey()); DataSourceMeta dsm = getDataSourceMeta(); boolean showSql = dsm.isWriteShowSql(); Dialect dialect = dsm.getDialect(); String[] columns; if (generated) { columns = getModifyAttrNames(generatedKey); } else { columns = getModifyAttrNames(); params = getModifyAttrValues(generatedKey); } else { params = getModifyAttrValues(); int result = 0; try { conn = getWriteConnection(dsm); pst = getPreparedStatement(showSql, true, conn, tableMeta, sql, params); setGeneratedKey(pst, tableMeta); clearModifyAttrs(); return result >= 1; } catch (SQLException e) {
boolean useCache = isUseCache(); TableMeta tableMeta = getTableMeta(); result = getCache(sql, params); if (result != null) { return result; DataSourceMeta dsm = getDataSourceMeta(); boolean showSql = dsm.isReadShowSql(); Connection conn = null; conn = getWriteConnection(dsm); pst = getPreparedStatement(showSql, false, conn, tableMeta, sql, params); rs = pst.executeQuery(); result = readQueryResult(rs); } catch (SQLException e) { throw new DBException(e.getMessage(), e); addCache(sql, params, result); return result;
boolean useCache = isUseCache(); TableMeta tableMeta = getTableMeta(); if (useCache) { result = getCache(sql, params); DataSourceMeta dsm = getDataSourceMeta(); boolean showSql = dsm.isReadShowSql(); Connection conn = null; ResultSet rs = null; try { conn = getReadConnection(dsm); pst = getPreparedStatement(showSql, false, conn, tableMeta, sql, params); rs = pst.executeQuery(); result = BaseBuilder.build(rs, getMClass(), dsm, tableMeta); } catch (SQLException e) { throw new DBException(e.getMessage(), e); addCache(sql, params, result); return result;
TableMeta tableMeta = getTableMeta(); Dialect dialect = getDialect(); String[] columns = getModifyAttrNames(generatedKey); if (columns.length <= 0) { logger.warn("Could not found any modified attributes."); id = get(generatedKey); checkNotNull(id, "You can't update model without Generated Key " + generatedKey + "."); Object[] values = getModifyAttrValues(generatedKey); ids[i++] = get(pKey); String sql = dialect.update(tableMeta.getTableName(), getAlias(), where, columns); if (update(sql, params)) { clearModifyAttrs(); return true;
public List<M> findColsInIds(String columns, Object... ids) { TableMeta tableMeta = getTableMeta(); String key = getPrimaryKey(tableMeta); Dialect dialect = getDialect(); StringBuilder appendQuestions = new StringBuilder(); for (int i = 0; i < ids.length; i++) { if (i == 0) { appendQuestions.append("?"); } else { appendQuestions.append(",?"); } } String sql = dialect.select(tableMeta.getTableName(), "", key + " IN (" + appendQuestions + ")", columns.split(",")); return find(sql, ids); }
/** * @param pageNumber 页码 * @param pageSize 每页数量 * @param sql sql语句 * @param params 参数 * @return */ public FullPage<M> fullPaginate(int pageNumber, int pageSize, String sql, Object... params) { checkArgument(pageNumber >= 1 && pageSize >= 1, "pageNumber and pageSize must be more than 0"); DataSourceMeta dsm = getDataSourceMeta(); Dialect dialect = dsm.getDialect(); long totalRow = 0; int totalPage = 0; List result = query(dialect.countWith(sql), params); int size = result.size(); if (size == 1) totalRow = ((Number) result.get(0)).longValue(); else if (size > 1) totalRow = result.size(); else return new FullPage<M>(new ArrayList<M>(0), pageNumber, pageSize, 0, 0); // totalRow = 0; totalPage = (int) (totalRow / pageSize); if (totalRow % pageSize != 0) { totalPage++; } // -------- List<M> list = find(dialect.paginateWith(pageNumber, pageSize, sql), params); return new FullPage<M>(list, pageNumber, pageSize, totalPage, (int) totalRow); }
/** * Find first model. I recommend add "limit 1" in your sql. * * @param sql an SQL statement that may contain one or more '?' IN parameter placeholders * @param params the parameters of sql * @return Model */ public M findFirst(String sql, Object... params) { TableMeta tableMeta = getTableMeta(); List<M> result = find(tableMeta.getDialect().paginateWith(1, 1, sql), params); return result.size() > 0 ? result.get(0) : null; }
/** * 返回一个Model * * @param sql * @param resultSetCall * @return */ public M findCallFirst(String sql, ResultSetCall resultSetCall) { TableMeta tableMeta = getTableMeta(); List<M> result = findCall(tableMeta.getDialect().paginateWith(1, 1, sql), resultSetCall); return result.size() > 0 ? result.get(0) : null; }
/** * @param pageNumber 页码 * @param pageSize 每页数量 * @param sql sql语句 * @param params 参数 * @return */ public Page<M> paginate(int pageNumber, int pageSize, String sql, Object... params) { checkArgument(pageNumber >= 1 && pageSize >= 1, "pageNumber and pageSize must be more than 0"); DataSourceMeta dsm = getDataSourceMeta(); Dialect dialect = dsm.getDialect(); List<M> list = find(dialect.paginateWith(pageNumber, pageSize, sql), params); return new Page<M>(list, pageNumber, pageSize); }
/** * Find model by ids * * @param ids * @return */ public List<M> findInIds(Object... ids) { return findColsInIds("*", ids); }
/** * Find model by id. * * @param id the id value of the model */ public M findById(Object id) { return findColsById("*", id); }
/** * Find model by multi id * * @param ids * @return */ public M findByIds(Object... ids) { return findColsByIds("*", ids); }
/** * 根据where条件查询model集合 * * @param colums 列 用逗号分割 * @param where 条件 * @param params 参数 * @return model集合 */ public List<M> findColsBy(String colums, String where, Object... params) { return find(getDialect().select(getTableMeta().getTableName(), getAlias(), where, colums.split(",")), params); }