рд╕рдВрднрд╡рддрдГ JDBI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛
рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдиреЛрдЯреНрд╕:
рдирд╛рдорд╛рдВрдХрд┐рдд рд╡рд░реНрдЧ (рдЗрд╕рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЖрдИрдбреАрдИ рдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рджреЗрдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ):
DBI
-> Jdbi
IDBI
-> Jdbi
DBIException
-> JdbiException
Jdbi
create()
рдлрд╝реИрдХреНрдЯрд░реА рдкрджреНрдзрддрд┐ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
ResultSetMapper
рдХреЛ RowMapper
$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ map
рд╡рд┐рдзрд┐ рдореЗрдВ рдЕрдм рдкрдВрдХреНрддрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдирд╣реАрдВ рд╣реИред Jdbi 3 рдореЗрдВ ResultSetMapper
рдирд╛рдо рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред @Mapper
рдХреЛ @UseRowMapper
$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред registerMapper()
рдкрд░ Jdbi
рдХреЛ registerRowMapper()
$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
@BindIn
рдХреЛ @BindList
#$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм StringTemplate рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ Jdbi рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдХреЛрдг рдХреЛрд╖реНрдардХ рдХреЛ рдЙрджреНрдзреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ IntelliJ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЯреВрд▓ -> рдбреЗрдЯрд╛рдмреЗрд╕ -> рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреИрдЯрд░реНрди рдХреЗ рддрд╣рдд рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрдЯрд░реНрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред
Query
рдореЗрдВ рдЕрдм Map
рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ list()
рдХреЛ рд╕реАрдзреЗ рдЙрд╕ рдкрд░ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред $#$23 list()
#$ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ mapToMap()
рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВред
TransactionStatus
рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
TransactionConsumer.useTransaction()
рдЕрдм рдХреЗрд╡рд▓ Handle
рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП TransactionStatus
рддрд░реНрдХ рдХреЛ Jdbi рдкрд░ Jdbi
useTransaction()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ Handle
ред
TransactionCallback.inTransaction()
рдЕрдм рдХреЗрд╡рд▓ Handle
рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП TransactionStatus
рддрд░реНрдХ рдХреЛ Jdbi рдкрд░ Jdbi
inTransaction()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ Handle
ред
CallbackFailedException
рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред HandleConsumer
, HandleCallback
, TransactionalConsumer
, рдФрд░ TransactionalCallback
рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдм рдХрд┐рд╕реА рднреА рдЕрдкрд╡рд╛рдж рдкреНрд░рдХрд╛рд░ рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдВрдЪ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдиреЗрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ) рдПрдХреНрд╕реЗрдкреНрд╢рди рд╣реЗрдВрдбрд▓рд┐рдВрдЧ)ред
SQL рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдорд░реНрдерди рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд┐рдд Jdbi
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
IntelliJ рдХрд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рд░рд┐рдлреИрдХреНрдЯрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдХрд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рдерд╛ред
рдзрдиреНрдпрд╡рд╛рдж @electrum рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП! рдпрд╣ рдПрдХ рдмрдбрд╝реА рдорджрдж рд╣реЛрдЧреА
рдореЗрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреЛрдЯ:
java.lang.reflect.Type
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ v2 java.lang.Class
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ v3 рдЬрдЯрд┐рд▓ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдЬреЛ v2 рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред@Bind
рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ -parameters
рд╕рдХреНрд╖рдо рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредStatementLocator
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛрд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдореБрдЦреНрдп рд╡рд┐рд╡рд░рдг рдЕрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ SQL рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛, SqlLocator
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ SQL рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВредрдПрдХ рдФрд░: StatementRewriter
рдХреЛ TemplateEngine
рдФрд░ SqlParser
рдореЗрдВ рдкреБрди: рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЪрдпрди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ред рдпрд╣ рдЗрд╕рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛:
List<Map<String, Object>> rs = h.select("select id, name from something");
рдЗрд╕рдХреЗ рд▓рд┐рдпреЗ:
List<Map<String, Object>> rs = h.select("select id, name from something").mapToMap().list();
рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ v3 рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рдХреНрддрд┐ рдФрд░ рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХреА рдХреАрдордд рдХреЗ рд╕рд╛рде рди рдЖрдПред
рд╣рд╛рдп @javajosh , рд╣рдордиреЗ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдХреЛ рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рдорд╛рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдореИрдкрд┐рдВрдЧ рдХреЛ Map
рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ, рддреЛ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╕ рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡рд┐рдЯреА рдХреЗ рдирд┐рдпрдо рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп Map
рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рдЫреЛрдЯреЗ рдкрд░рд┐рдгрд╛рдо рд╡рд░реНрдЧ (рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░/рдлрд╝реАрд▓реНрдб/рдкреНрд░реЙрдкрд░реНрдЯреА рдореИрдкрд░реНрд╕ рдФрд░ рдмрд╛рдЗрдВрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд▓рд┐рдЦреВрдВрдЧрд╛ рдФрд░ рд╣рдореЗрд╢рд╛ Map
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреВрдВрдЧрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ?
рд╣рд╛рдп @stevenschlansker - рдореИрдВ рдЗрд╕реЗ "рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╣рд▓реЗ рдЕрдиреБрднрд╡" рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реВрдВред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ v2 рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░рд╛рд╣рдиреАрдп рд░реВрдк рд╕реЗ рдиреНрдпреВрдирддрдо рд╣реИред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЧреНрд░реЛрд╡реА рдЬреИрд╕реА рдЬреЗрд╡реАрдПрдо-рд╣реЛрд╕реНрдЯреЗрдб рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕рд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рд╢рд╛рдпрдж рдПрдХ рдЧреИрд░-рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦреЗрдВрдЧреЗред
@javajosh рдЖрдк https://github.com/jdbi/jdbi/pull/925 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?
@stevenschlansker рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм #928 рдерд╛?
@stevenschlansker рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕реБрдзрд╛рд░! рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА v2 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИред :) рдпрд╣ рдорд╛рд╡реЗрди, рдЖрджрд┐ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд╛рдЪрд╛рд▓рддрд╛ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИред рдореИрдВ рдмрд╕ JDBI рдХреЛ JUnit рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛, рдЬрд┐рд╕рдиреЗ рд▓реЛрдЧреЛрдВ рдХреЛ v4 рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдереАрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдереА v3 рдФрд░ v3 "рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛" рдерд╛ред рдореЗрд░реЗ рдкрд╛рд╕ "withHandle" рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╣реА рднрд╛рд╡рдирд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рднреА рд▓рдЯрдХрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВрдбрд▓ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рд╡реГрддреНрддрд┐ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ)ред
@javajosh рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА Jdbi.open()
рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
v2 рд╕реЗ v3 рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдбреЙрдХреНрд╕ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИред
@javajosh ResultBearing.list()
рд╡рд┐рдзрд┐ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реИ рдЬреЛ List<Map<String,Object>>
рд▓реМрдЯрд╛рддрд╛ рд╣реИ: рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛, рдЦрд╛рд╕рдХрд░ рд░рд┐рд▓реАрдЬ рдЪрдХреНрд░ рдореЗрдВ рджреЗрд░ рд╕реЗред
рдореИрдВ рдХреНрд░рд┐рдпрд╛рддреНрдордХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд░рдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрд░рд┐рдпрд╛рддреНрдордХрддрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ:
handle.createQuery(sql)
.mapToMap()
.list()
рдкрд╛рдардХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
handle.createQuery(sql)
.list()
рдпрд╣ рдПрдХ рдирд╛рдЬреБрдХ рдмрд╛рдд рд╣реИ, рдФрд░ рдореИрдВ рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЪреБрдирдиреЗ рд╕реЗ рдИрд░реНрд╖реНрдпрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред JDBI рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╢рдмреНрджрд╢рдГ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ; рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдлреИрд╕рд▓реЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реВрдВ! рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рдд рдХрд╛ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЫреЛрдЯреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдпрд╛ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдиреЛрдЯреНрд╕:
рдирд╛рдорд╛рдВрдХрд┐рдд рд╡рд░реНрдЧ (рдЗрд╕рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЖрдИрдбреАрдИ рдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рджреЗрдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ):
DBI
->Jdbi
IDBI
->Jdbi
DBIException
->JdbiException
Jdbi
create()
рдлрд╝реИрдХреНрдЯрд░реА рдкрджреНрдзрддрд┐ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредResultSetMapper
рдХреЛRowMapper
$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░map
рд╡рд┐рдзрд┐ рдореЗрдВ рдЕрдм рдкрдВрдХреНрддрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдирд╣реАрдВ рд╣реИред Jdbi 3 рдореЗрдВResultSetMapper
рдирд╛рдо рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред@Mapper
рдХреЛ@UseRowMapper
$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредregisterMapper()
рдкрд░Jdbi
рдХреЛregisterRowMapper()
$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред@BindIn
рдХреЛ@BindList
#$ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм StringTemplate рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредрдбрд┐рдлрд╝реЙрд▓реНрдЯ Jdbi рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдХреЛрдг рдХреЛрд╖реНрдардХ рдХреЛ рдЙрджреНрдзреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ IntelliJ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЯреВрд▓ -> рдбреЗрдЯрд╛рдмреЗрд╕ -> рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреИрдЯрд░реНрди рдХреЗ рддрд╣рдд рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрдЯрд░реНрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред
Query
рдореЗрдВ рдЕрдмMap
рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░list()
рдХреЛ рд╕реАрдзреЗ рдЙрд╕ рдкрд░ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред $#$23list()
#$ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗmapToMap()
рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВредTransactionStatus
рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИредTransactionConsumer.useTransaction()
рдЕрдм рдХреЗрд╡рд▓Handle
рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдПTransactionStatus
рддрд░реНрдХ рдХреЛ Jdbi рдкрд░Jdbi
useTransaction()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛Handle
редTransactionCallback.inTransaction()
рдЕрдм рдХреЗрд╡рд▓Handle
рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдПTransactionStatus
рддрд░реНрдХ рдХреЛ Jdbi рдкрд░Jdbi
inTransaction()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛Handle
редCallbackFailedException
рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИредHandleConsumer
,HandleCallback
,TransactionalConsumer
, рдФрд░TransactionalCallback
рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдм рдХрд┐рд╕реА рднреА рдЕрдкрд╡рд╛рдж рдкреНрд░рдХрд╛рд░ рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдВрдЪ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдиреЗрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ) рдПрдХреНрд╕реЗрдкреНрд╢рди рд╣реЗрдВрдбрд▓рд┐рдВрдЧ)редSQL рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдорд░реНрдерди рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд┐рдд
Jdbi
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПредIntelliJ рдХрд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рд░рд┐рдлреИрдХреНрдЯрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдХрд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рдерд╛ред