org.skife.jdbi.v2.Query类的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(10.8k)|赞(0)|评价(0)|浏览(211)

本文整理了Java中org.skife.jdbi.v2.Query类的一些代码示例,展示了Query类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query类的具体详情如下:
包路径:org.skife.jdbi.v2.Query
类名称:Query

Query介绍

[英]Statement providing convenience result handling for SQL queries.
[中]语句,为SQL查询提供方便的结果处理。

代码示例

代码示例来源:origin: apache/incubator-druid

  1. .createQuery(
  2. StringUtils.format("SELECT COUNT(*) FROM %1$s WHERE %2$s = :key", tableName, keyColumn)
  3. .bind("key", key)
  4. .map(IntegerMapper.FIRST)
  5. .first();
  6. if (count == 0) {
  7. handle.createStatement(
  8. StringUtils.format(
  9. "INSERT INTO %1$s (%2$s, %3$s) VALUES (:key, :value)",
  10. .bind("key", key)
  11. .bind("value", value)
  12. .execute();
  13. } else {
  14. handle.createStatement(
  15. StringUtils.format(
  16. "UPDATE %1$s SET %3$s=:value WHERE %2$s=:key",

代码示例来源:origin: apache/incubator-druid

  1. @Override
  2. public List<String> inTransaction(Handle handle, TransactionStatus status)
  3. {
  4. return handle.createQuery(reverseFetchQuery)
  5. .bind("val", value)
  6. .map(StringMapper.FIRST)
  7. .list();
  8. }
  9. });

代码示例来源:origin: apache/incubator-druid

  1. private List<SegmentIdWithShardSpec> getPendingSegmentsForIntervalWithHandle(
  2. final Handle handle,
  3. final String dataSource,
  4. final Interval interval
  5. ) throws IOException
  6. {
  7. final List<SegmentIdWithShardSpec> identifiers = new ArrayList<>();
  8. final ResultIterator<byte[]> dbSegments =
  9. handle.createQuery(
  10. StringUtils.format(
  11. "SELECT payload FROM %1$s WHERE dataSource = :dataSource AND start <= :end and %2$send%2$s >= :start",
  12. dbTables.getPendingSegmentsTable(), connector.getQuoteString()
  13. )
  14. )
  15. .bind("dataSource", dataSource)
  16. .bind("start", interval.getStart().toString())
  17. .bind("end", interval.getEnd().toString())
  18. .map(ByteArrayMapper.FIRST)
  19. .iterator();
  20. while (dbSegments.hasNext()) {
  21. final byte[] payload = dbSegments.next();
  22. final SegmentIdWithShardSpec identifier = jsonMapper.readValue(payload, SegmentIdWithShardSpec.class);
  23. if (interval.overlaps(identifier.getInterval())) {
  24. identifiers.add(identifier);
  25. }
  26. }
  27. dbSegments.close();
  28. return identifiers;
  29. }

代码示例来源:origin: apache/incubator-druid

  1. @Override
  2. public boolean tableExists(Handle handle, String tableName)
  3. {
  4. return !handle.createQuery("select * from SYS.SYSTABLES where tablename = :tableName")
  5. .bind("tableName", StringUtils.toUpperCase(tableName))
  6. .list()
  7. .isEmpty();
  8. }

代码示例来源:origin: apache/incubator-druid

  1. @Override
  2. public Timestamp withHandle(Handle handle)
  3. {
  4. final String query = StringUtils.format(
  5. "SELECT MAX(%s) FROM %s",
  6. tsColumn, table
  7. );
  8. return handle
  9. .createQuery(query)
  10. .map(TimestampMapper.FIRST)
  11. .first();
  12. }
  13. }

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testDoubleCleanup()
  3. throws Exception
  4. {
  5. final Handle handle = dbi.open();
  6. final Query<Integer> q = handle
  7. .createQuery("SELECT id FROM something")
  8. .cleanupHandle()
  9. .cleanupHandle()
  10. .mapTo(Integer.class);
  11. final ResultIterator<Integer> it = q.iterator();
  12. while (it.hasNext()) {
  13. it.next();
  14. }
  15. assertFalse(it.hasNext());
  16. assertTrue(handle.getConnection().isClosed());
  17. }

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testDefines() throws Exception
  3. {
  4. handle.attach(Kangaroo.class).weirdInsert("something", "id", "name", 5, "Bouncer");
  5. String name = handle.createQuery("select name from something where id = 5")
  6. .mapTo(String.class)
  7. .first();
  8. assertThat(name, equalTo("Bouncer"));
  9. }

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testDoesNotExist() throws Exception
  3. {
  4. h.execute("insert into something (id, name) values (1, 'Coda')");
  5. h.registerContainerFactory(new MaybeContainerFactory());
  6. Maybe<String> rs = h.createQuery("select name from something where id = :id")
  7. .bind("id", 2)
  8. .mapTo(String.class)
  9. .first(Maybe.class);
  10. assertThat(rs.isKnown(), equalTo(false));
  11. }

代码示例来源:origin: rakam-io/rakam

  1. private Lock tryLock(String name, int tryCount) {
  2. try {
  3. if (currentHandle.getConnection().isClosed()) {
  4. synchronized (this) {
  5. currentHandle = dbi.open();
  6. Boolean first = currentHandle.createQuery("select pg_try_advisory_lock(:name)")
  7. .bind("name", name.hashCode())
  8. .map(BooleanMapper.FIRST)
  9. .first();
  10. currentHandle.createQuery("select pg_advisory_unlock(:name)")
  11. .bind("name", name.hashCode())
  12. .map(BooleanMapper.FIRST)
  13. .first();
  14. };
  15. } catch (SQLException e) {
  16. try {
  17. if (currentHandle.getConnection().isClosed()) {
  18. synchronized (this) {
  19. currentHandle = dbi.open();
  20. currentHandle = dbi.open();

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testFluentApi() throws Exception
  3. {
  4. Map<String, Team> teams = handle.createQuery("select t.name as teamName, " +
  5. " t.mascot as mascot, " +
  6. " p.name as personName, " +
  7. " p.role as role " +
  8. "from team t inner join person p on (t.name = p.team)")
  9. .map(TeamPersonJoinRow.class)
  10. .fold(Maps.<String, Team>newHashMap(), new TeamFolder());
  11. assertThat(teams, equalTo(expected));
  12. }

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testRegisterOnDBI() throws Exception
  3. {
  4. dbi.registerArgumentFactory(new NameAF());
  5. Handle h2 = dbi.open();
  6. h2.createStatement("insert into something (id, name) values (:id, :name)")
  7. .bind("id", 7)
  8. .bind("name", new Name("Brian", "McCallister"))
  9. .execute();
  10. String full_name = h.createQuery("select name from something where id = 7").mapTo(String.class).first();
  11. assertThat(full_name, equalTo("Brian McCallister"));
  12. h2.close();
  13. }

代码示例来源:origin: org.kill-bill.commons/killbill-jdbi

  1. @Test
  2. @Category(JDBIQuarantineTests.class) // Feature disabled
  3. public void testRegisterOnHandle() throws Exception
  4. {
  5. h.registerArgumentFactory(new NameAF());
  6. h.createStatement("insert into something (id, name) values (:id, :name)")
  7. .bind("id", 7)
  8. .bind("name", new Name("Brian", "McCallister"))
  9. .execute();
  10. String full_name = h.createQuery("select name from something where id = 7").map(StringMapper.FIRST).first();
  11. assertThat(full_name, equalTo("Brian McCallister"));
  12. }

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testRegisterOnHandle() throws Exception
  3. {
  4. h.registerArgumentFactory(new NameAF());
  5. h.createStatement("insert into something (id, name) values (:id, :name)")
  6. .bind("id", 7)
  7. .bind("name", new Name("Brian", "McCallister"))
  8. .execute();
  9. String full_name = h.createQuery("select name from something where id = 7").mapTo(String.class).first();
  10. assertThat(full_name, equalTo("Brian McCallister"));
  11. }

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testOnList() throws Exception
  3. {
  4. h.registerContainerFactory(new ImmutableListContainerFactory());
  5. h.execute("insert into something (id, name) values (1, 'Coda')");
  6. h.execute("insert into something (id, name) values (2, 'Brian')");
  7. ImmutableList<String> rs = h.createQuery("select name from something order by id")
  8. .mapTo(String.class)
  9. .list(ImmutableList.class);
  10. assertThat(rs, equalTo(ImmutableList.of("Coda", "Brian")));
  11. }

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testBindConstantValue() throws Exception
  3. {
  4. UsesBatching b = handle.attach(UsesBatching.class);
  5. List<Integer> ids = Arrays.asList(1, 2, 3, 4, 5);
  6. b.withConstantValue(ids, "Johan");
  7. assertThat(b.size(), equalTo(5));
  8. List<String> names = handle.createQuery("select distinct name from something")
  9. .mapTo(String.class)
  10. .list();
  11. assertThat(names, equalTo(Arrays.asList("Johan")));
  12. }

代码示例来源:origin: rakam-io/rakam

  1. public List<ProjectKeyPermission> apiKeyOwners(int project, List<String> readKeys) {
  2. try (Handle handle = dbi.open()) {
  3. return handle.createQuery("select read_key, web_user.email, web_user_api_key.created_at from web_user_api_key \n" +
  4. "join web_user_api_key_permission permission on (permission.api_key_id = web_user_api_key.id and permission.read_permission)\n" +
  5. "join web_user on (web_user.id = permission.user_id)\n" +
  6. "where read_key = any (:keys) and web_user_api_key.project_id = :project")
  7. .bind("keys", handle.getConnection().createArrayOf("text", readKeys.toArray()))
  8. .bind("project", project)
  9. .map((index, r, ctx) -> {
  10. return new ProjectKeyPermission(r.getString(1), r.getString(2), r.getTimestamp(3).toInstant());
  11. }).list();
  12. } catch (SQLException e) {
  13. throw new RuntimeException(e);
  14. }
  15. }

代码示例来源:origin: rakam-io/rakam

  1. @ApiParam("type_id") int type_id,
  2. @ApiParam("emails") List<String> emails) {
  3. try (Handle handle = dbi.open()) {
  4. int id = handle.createQuery("INSERT INTO scheduled_email (project_id, user_id, date_interval, hour_of_day, name, type, type_id, emails, enabled) " +
  5. "VALUES (:project, :user_id, :date_interval, :hour_of_day, :name, :type, :type_id, :emails, true) RETURNING id")
  6. .bind("project", project.project)
  7. .bind("user_id", project.userId)
  8. .bind("date_interval", date_interval)
  9. .bind("hour_of_day", hour_of_day)
  10. .bind("name", name)
  11. .bind("type", type)
  12. .bind("type_id", type_id)
  13. .bind("emails", handle.getConnection().createArrayOf("text", emails.toArray()))
  14. .map(IntegerMapper.FIRST).first();

代码示例来源:origin: org.jdbi/jdbi

  1. @Test
  2. public void testJustNext() throws Exception {
  3. h.createStatement("insert into something (id, name) values (1, 'eric')").execute();
  4. h.createStatement("insert into something (id, name) values (2, 'brian')").execute();
  5. h.createStatement("insert into something (id, name) values (3, 'john')").execute();
  6. ResultIterator<Map<String, Object>> it = h.createQuery("select * from something order by id")
  7. .cleanupHandle()
  8. .iterator();
  9. it.next();
  10. it.next();
  11. it.next();
  12. }

代码示例来源:origin: apache/incubator-druid

  1. @Override
  2. public Map<Long, LockType> withHandle(Handle handle)
  3. return handle.createQuery(
  4. StringUtils.format(
  5. "SELECT id, lock_payload FROM %1$s WHERE %2$s_id = :entryId",
  6. .bind("entryId", entryId)
  7. .map(
  8. new ResultSetMapper<Pair<Long, LockType>>()
  9. .fold(
  10. Maps.newLinkedHashMap(),
  11. new Folder3<Map<Long, LockType>, Pair<Long, LockType>>()

代码示例来源:origin: rakam-io/rakam

  1. public void revokeApiKeys(int user, int project, String masterKey) {
  2. try (Handle handle = dbi.open()) {
  3. if (!hasMasterAccess(handle, project, user)) {
  4. throw new RakamException("You do not have master key permission", UNAUTHORIZED);
  5. }
  6. try {
  7. handle.createStatement("DELETE FROM web_user_api_key " +
  8. "WHERE user_id = :user_id AND project_id = :project AND master_key = :masterKey")
  9. .bind("user_id", user)
  10. .bind("project", project)
  11. .bind("masterKey", masterKey).execute();
  12. } catch (Throwable e) {
  13. if (e.getMessage().contains("web_user_api_key_permission")) {
  14. List<String> list = handle.createQuery("SELECT web_user.email FROM web_user_api_key_permission permission " +
  15. "JOIN web_user ON (web_user.id = permission.user_id) " +
  16. "WHERE api_key_id in (SELECT id FROM web_user_api_key WHERE master_key = :masterKey and user_id = :userId and project_id = :project)")
  17. .bind("masterKey", masterKey).bind("userId", user).bind("project", project).map(StringMapper.FIRST).list();
  18. if (!list.isEmpty()) {
  19. throw new RakamException("Users [" + list.stream().collect(Collectors.joining(", ")) + "] use this key." +
  20. " You need to revoke the access of the user in order to be able to delete this key", BAD_REQUEST);
  21. }
  22. }
  23. throw e;
  24. }
  25. }
  26. }

相关文章