/** * Invokes the run method on the {@link org.sql2o.StatementRunnableWithResult} instance. This method guarantees that * the connection is closed properly, when either the run method completes or if an exception occurs. * @param runnable * @param argument */ public void withConnection(StatementRunnable runnable, Object argument) { Connection connection = null; try{ connection = open(); runnable.run(connection, argument); } catch (Throwable t) { throw new Sql2oException("An error occurred while executing StatementRunnable", t); } finally{ if (connection != null) { connection.close(); } } }
/** * Invokes the run method on the {@link org.sql2o.StatementRunnableWithResult} instance. This method guarantees that * the connection is closed properly, when either the run method completes or if an exception occurs. * @param runnable * @param argument * @param <V> * @return */ @SuppressWarnings("unchecked") public <V> V withConnection(StatementRunnableWithResult<V> runnable, Object argument) { Connection connection = null; try{ connection = open(); return (V)runnable.run(connection, argument); } catch (Throwable t) { throw new Sql2oException("An error occurred while executing StatementRunnable", t); } finally { if (connection != null) { connection.close(); } } }
Sql2o sql2o = new Sql2o(DB_URL, USER, PASS); String sql = "SELECT id, category, duedate " + "FROM tasks " + "WHERE category = :category"; try(Connection con = sql2o.open()) { List<Task> tasks = con.createQuery(sql) .addParameter("category", "foo") .executeAndFetch(Task.class); }
private Connection getConn() { Connection connection = Base.connectionThreadLocal.get(); if (null != connection) { return connection; } connection = getSql2o().open(); return connection; }
public Connection getConnection(boolean serialisable) { if (serialisable) { return database.beginTransaction(TRANSACTION_SERIALIZABLE); } else { return database.open(); } } }
/** * Get a database connection. * * @return Connection */ private Connection getConn() { Connection connection = localConnection.get(); return ifNotNullReturn(connection, connection, this.getSql2o().open()); }
public long count(String sql, Object... args) { int pos = 1; while (sql.contains("?")) { sql = sql.replaceFirst("\\?", ":p" + (pos++)); } args = args == null ? new Object[]{} : args; try (Connection con = getSql2o().open()) { this.cleanParam(); log.debug(EXECUTE_SQL_PREFIX + " => {}", sql); log.debug(PARAMETER_PREFIX + " => {}", Arrays.toString(args)); return con.createQuery(sql).withParams(args) .executeAndFetchFirst(Long.class); } }
@Override public boolean existPost(UUID post) { try (Connection conn = sql2o.open()) { List<Post> posts = conn.createQuery("select * from posts where post_uuid=:post") .addParameter("post", post) .executeAndFetch(Post.class); return posts.size() > 0; } }
@Override public void deletePost(UUID uuid) { try (Connection conn = sql2o.open()) { conn.createQuery("delete from posts where post_uuid=:post_uuid") .addParameter("post_uuid", uuid) .executeUpdate(); } }
@Override public List<Comment> getAllCommentsOn(UUID post) { try (Connection conn = sql2o.open()) { return conn.createQuery("select * from comments where post_uuid=:post_uuid") .addParameter("post_uuid", post) .executeAndFetch(Comment.class); } }
@Override public List<Post> getAllPosts() { try (Connection conn = sql2o.open()) { List<Post> posts = conn.createQuery("select * from posts") .executeAndFetch(Post.class); posts.forEach((post) -> post.setCategories(getCategoriesFor(conn, post.getPost_uuid()))); return posts; } }
public static <T> List<T> getList(String sql, Class<T> clazz, Map<String, Object> params){ Connection con = sql2o.open(); Query query = con.createQuery(sql); executeQuery(query, params); List<T> list = query.executeAndFetch(clazz); con.close(); return list; }
public static <T> T get(String sql, Class<T> clazz, Map<String, Object> params){ Connection con = sql2o.open(); Query query = con.createQuery(sql); executeQuery(query, params); T t = query.executeAndFetchFirst(clazz); con.close(); return t; }
@SuppressWarnings("unchecked") public static Map<String, Object> getMap(String sql, Map<String, Object> params){ Connection con = sql2o.open(); Query query = con.createQuery(sql); executeQuery(query, params); Map<String, Object> t = (Map<String, Object>) query.executeScalar(); con.close(); return t; }
private long count(boolean cleanParam) { QueryMeta queryMeta = SqlBuilder.buildCountSql(this); try (Connection con = getSql2o().open()) { if (cleanParam) this.cleanParam(); log.debug(EXECUTE_SQL_PREFIX + " => {}", queryMeta.getSql()); log.debug(PARAMETER_PREFIX + " => {}", Arrays.toString(queryMeta.getParams())); return con.createQuery(queryMeta.getSql()) .withParams(queryMeta.getParams()) .executeAndFetchFirst(Long.class); } }
public <T extends ActiveRecord> T find() { QueryMeta queryMeta = SqlBuilder.buildFindSql(this); Class<T> type = (Class<T>) getClass(); try (Connection con = getSql2o().open()) { this.cleanParam(); log.debug(EXECUTE_SQL_PREFIX + " => {}", queryMeta.getSql()); log.debug(PARAMETER_PREFIX + " => {}", Arrays.toString(queryMeta.getParams())); Query query = con.createQuery(queryMeta.getSql()).withParams(queryMeta.getParams()).throwOnMappingFailure(false); if (queryMeta.hasColumnMapping()) { queryMeta.getColumnMapping().forEach(query::addColumnMapping); } return query.executeAndFetchFirst(type); } }
public static List<Map<String, Object>> getMapList(String sql, Map<String, Object> params){ Connection con = sql2o.open(); Query query = con.createQuery(sql); executeQuery(query, params); List<Map<String, Object>> t = query.executeAndFetchTable().asList(); con.close(); return t; }
public <T> List<T> findAll(Class<T> type, Supplier<ConditionEnum>... conditions) { QueryMeta queryMeta = SqlBuilder.buildFindAllSql(this, conditions); try (Connection con = getSql2o().open()) { log.debug(EXECUTE_SQL_PREFIX + " => {}", queryMeta.getSql()); log.debug(PARAMETER_PREFIX + " => {}", Arrays.toString(queryMeta.getParams())); this.cleanParam(); Query query = con.createQuery(queryMeta.getSql()).withParams(queryMeta.getParams()).throwOnMappingFailure(false); if (queryMeta.hasColumnMapping()) { queryMeta.getColumnMapping().forEach(query::addColumnMapping); } return query.executeAndFetch(type); } }
/** * 带参数更新 * @param sql * @param params * @return */ public static int update(String sql, Map<String, Object> params){ Connection con = sql2o.open(); Query query = con.createQuery(sql); executeQuery(query, params); int res = query.executeUpdate().getResult(); con.close(); return res; }
@Override public void updatePost(Post post) { try (Connection conn = sql2o.open()) { conn.createQuery("update posts set title=:title, content=:content where post_uuid=:post_uuid") .addParameter("post_uuid", post.getPost_uuid()) .addParameter("title", post.getTitle()) .addParameter("content", post.getContent()) .executeUpdate(); } }