μλ νμΈμ,
λ¨Όμ μ΄ νλ₯ν λμκ΄μ κ°μ¬λ립λλ€.
λ΄κ° κ²ͺκ³ μλ μ€λ₯λ λ€μκ³Ό κ°μ΅λλ€.
λΉ λͺ©λ‘ λ°μΈλ©
java.util.List μ νμ '[]'μ λν΄ λ±λ‘λ μΈμ ν©ν λ¦¬κ° μμ΅λλ€.
λ λ§μ 컨ν μ€νΈλ₯Ό μ 곡ν μ μμ΅λκΉ? μ΄λ€ SQLμ μ€ννκ³ μμ΅λκΉ? μ΄λ λ°μ΄ν°λ² μ΄μ€ 곡κΈμ 체μ λκΉ?
μλ νμΈμ @qualidafial μ λλ€ .
SQL: select * from invoice where invoice.id IN :ids
λ°μ΄ν°λ² μ΄μ€ 곡κΈμ
체: SQL Server 2017
μκ² μ΅λλ€. μ΄μ μ΄ν΄κ° λ©λλ€.
JDBCλ λ°°μ΄λ‘ μμ ν λ μ½κ° μ΄μν©λλ€. λ°μ΄ν°λ² μ΄μ€ 곡κΈμ 체μμ μ¬μ©νλ λ°μ΄ν° μ ν μ΄λ¦μ μμμΌ ν©λλ€. Jdbiκ° μ μ μ°κ²°ν μ μλλ‘ νλ €λ©΄ Java ν΄λμ€ μ΄λ¦λ³λ‘ λ°°μ΄ μμ μ ν μ΄λ¦μ λ±λ‘ν΄μΌ ν©λλ€.
Jdbi jdbi = Jdbi.create(...);
...
jdbi.registerArrayType(int.class, "integer");
jdbi.registerArrayType(Integer.class, "integer");
μ¦, μ¬μ©μκ° μ¬λ°λ₯Έ λ°©ν₯μ κ°λ¦¬ν€λλ‘ μμΈ λ©μμ§λ₯Ό κ°μ ν μ μμ΅λλ€.
@qualidafial νλ , μ΅κ³ μ λλ€. μ λ§ κ°μ¬ν©λλ€!
:+1: μ°Έκ³ νμΈμ. λλΌμ΄λ²κ° μ§μνλ μ¬μ©μ μ§μ λ°μ΄ν° μ νκ³Ό Java μ νκ³Ό JDBC λ°μ΄ν° μ ν κ°μ 맀νμ΄ λ¬΄μμΈμ§ μ μ μλλ‘ μΌλΆ λ¬Έμλ₯Ό μλ €μ£Όμλ©΄ SQL Server νλ¬κ·ΈμΈμ Jdbiμ μΆκ°ν μ μμ΅λλ€. μ΄λ¦.
κ±°λ.
κΈ°λ³Έ λ°μ΄ν° μ ν:
https://docs.microsoft.com/en-us/sql/connect/jdbc/using-basic-data-types
κ³ κΈ λ°μ΄ν° μ ν:
https://docs.microsoft.com/en-us/sql/connect/jdbc/using-advanced-data-types
@qualidafial FYI, λΆλͺ ν μ€λΉλ SqlArrayκ° μλ IN λ¬Έμ SQL Server JDBC λλΌμ΄λ²μμ μ§μλμ§ μμ΅λλ€.
λλ @BindList
μ¬μ©ν μ μμ΅λλ€.
@SqlQuery("select * from invoice where invoice.id IN (<ids>)")
Set<Invoice> getInvoices(@BindList("ids") List<Integer> ids);
λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€ 곡κΈμ
체λ μΌνλ‘ κ΅¬λΆλ WHERE column IN (a, b, c, ...)
μ μ νμ©λλ νλͺ© μμ μ νμ λ μ μμ΅λλ€.
λΆλͺ ν SQL μλ²λ λ¨μΌ κ° λ§€κ° λ³μλ§ μ§μνλ―λ‘ μλμΌλ‘ λ°°μ΄μ λ§λ€μμ§λ§ μ΄κ²μ λ¬Έμμ΄ λ°°μ΄μ μμ νμ§ μμΌλ©° SQL μ£Όμ μ λμ ν μ μμ΅λλ€.
default List<LotInvoiceRef> getInvoices(List<Long> invoiceIds) {
final List<LotInvoiceRef> lotInvoiceRefs = invoiceIds.stream()
.map(String::valueOf)
.reduce((a, b) -> a + "," + b)
.map(this::getAllInvoiceRefs)
.orElse(new ArrayList<>());
return lotInvoiceRefs;
}
@georgerb SQL μ£Όμ μΌλ‘λΆν° 보νΈν΄μΌ νλ λ΄ λ§μ§λ§ μ견μ μ°Έμ‘°νμμμ€.
λλ @BindListμ aproachμ μ¬λνμ§λ§ λ λͺ μλ₯Ό κΈμ§λ₯Ό @BindList λ§€κ° λ³μ λΉ λͺ©λ‘μ νμ©νλ λ°©λ²μ΄ νμ @qualidafial.
@qualidafial nvm, μ£Όμμ λΉ λ₯΄κ² νν€μΉκ³ λ€μμ μ¬μ©νμ΅λλ€. @BindList(value = "invoiceIds", onEmpty = BindList.EmptyHandling.NULL)
κ·Έλ¦¬κ³ μλ²½νκ² μλνμ΅λλ€.
λ€μ λ§νμ§λ§ μ΄κ²μ μ΅κ³ μμ€μ λλ€. μ°λ¦¬κ° κΈ°μ¬ν μ μλ λ°©λ²μ΄ μμ΅λκΉ? μ΅μν λ¬Έμλ‘ μ¬λ¬λΆμ λμ΅λλ€.
κ³ λ§μμ, λΉμ μ λ§€μ° μΉμ ν©λλ€. μ°λ¦¬ :heart: ν 리νμ€νΈ!
μ΄ λνλ§μΌλ‘λ μΈ κ°μ§ κ°λ₯ν κ°μ μ¬νμ μ μ μμ΅λλ€.
@BindList
λν κ°λ°μ κ°μ΄λ μΉμ
μ μΆκ°ν©λλ€(μλ§λ @DefineList
).μμ κ° νλͺ©μ λμμΌλ‘ νλ λ³λμ λ¬Έμ λ₯Ό μ μΆν΄ μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€. κ·Έλ° λ€μ μ΄κ²μ λ«κ³ κ°κ°μ κ°λ³μ μΌλ‘ μΆμ ν μ μμ΅λλ€.
κ·Έλ¦¬κ³ ν¨κ» μ€ννκ³ μΆμ Jdbi κ°μ μ λν μμ΄λμ΄κ° μλ€λ©΄ ν΄μ£ΌμΈμ! JPA, Kotlin λ° Vavr νλ¬κ·ΈμΈκ³Ό Core λ° SQL Objectμ λ§μ μμλ λͺ¨λ Jdbi μ¬μ©μκ° μ μΆν κ²μ λλ€.
@qualidafial μλ£. #993
κ°μ¬ ν΄μ! #993μ μ°¬μ±νμ¬ μ΄ λ¬Έμ λ₯Ό μ’ λ£ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
μκ² μ΅λλ€. μ΄μ μ΄ν΄κ° λ©λλ€.
JDBCλ λ°°μ΄λ‘ μμ ν λ μ½κ° μ΄μν©λλ€. λ°μ΄ν°λ² μ΄μ€ 곡κΈμ 체μμ μ¬μ©νλ λ°μ΄ν° μ ν μ΄λ¦μ μμμΌ ν©λλ€. Jdbiκ° μ μ μ°κ²°ν μ μλλ‘ νλ €λ©΄ Java ν΄λμ€ μ΄λ¦λ³λ‘ λ°°μ΄ μμ μ ν μ΄λ¦μ λ±λ‘ν΄μΌ ν©λλ€.