/** * 删除指定个Id的数据 * * @param id * @return */ public boolean deleteById(Serializable id, Class classz) { DBTableMeta dbTableMeta = DBTableMetaFactory.getDBTableMeta(classz); String sql = getSqlAnalyzer().analyzeDeleteByPrimaryKey(dbTableMeta); printSQL(sql, new Object[] {id}); QueryRunner queryRunner = new QueryRunner(); Connection conn = getDbConnectionFactory().getConnection(); try { int num = queryRunner.update(conn, sql, id); if (num == 1) { return true; } else if (num == 0) { return false; } else { throw new SQLException("数据删除异常,错误的sql与参数导致删除了" + num + "条数据"); } } catch (SQLException e) { throw new RuntimeException("删除数据失败", e); } finally { getDbConnectionFactory().releaseConnection(conn); } }
/** * 更新指定Id的数据 * * @param model * @return */ public boolean update(Object model) { if (model == null) { log.warn("更新数据失败,传入的model对象为null"); return false; } DBTableMeta dbTableMeta = DBTableMetaFactory.getDBTableMeta(model.getClass()); AnalyzeResult analyzeResult = getSqlAnalyzer().analyzeUpdateByPrimaryKey(dbTableMeta, model); return doUpdate(analyzeResult); }
/** * 根据表达式统计长度 * * @param example * @param classz * @param <T> * @return */ public <T> long countByExample(Example example, Class<T> classz) { DBTableMeta dbTableMeta = DBTableMetaFactory.getDBTableMeta(classz); AnalyzeResult analyzeResult = getSqlAnalyzer().analyzeCountByExample(dbTableMeta, example); printSQL(analyzeResult.getSql(), analyzeResult.getParams()); Connection conn = getDbConnectionFactory().getConnection(); QueryRunner queryRunner = new QueryRunner(); try { return queryRunner.query( conn, analyzeResult.getSql(), new ScalarHandler<Long>(1), analyzeResult.getParams()); } catch (SQLException e) { throw new RuntimeException(e); } finally { getDbConnectionFactory().releaseConnection(conn); } }
/** * 查询指定Id的数据 * * @param id * @param classz * @param <T> * @return */ public <T extends Model> T findById(Serializable id, Class<T> classz) { DBTableMeta dbTableMeta = DBTableMetaFactory.getDBTableMeta(classz); String sql = getSqlAnalyzer().analyzeSelectByPrimaryKey(dbTableMeta); printSQL(sql, new Object[] {id}); Connection conn = getDbConnectionFactory().getConnection(); QueryRunner queryRunner = new QueryRunner(); try { T obj = queryRunner.query(conn, sql, new AnnotationBeanHandler<T>(classz), id); return obj; } catch (Exception e) { throw new RuntimeException(e); } finally { getDbConnectionFactory().releaseConnection(conn); } }