jmoiron / sqlx

general purpose extensions to golang's database/sql
http://jmoiron.github.io/sqlx/
MIT License
16.32k stars 1.09k forks source link

Automatically support "IN" clause and parameter expansion in select, exec, namedSelect, and namedExec methods #891

Open suiriass opened 1 year ago

suiriass commented 1 year ago

https://github.com/go-sqlx/sqlx/issues/18 Description:

Currently, when using the select, exec, namedSelect, and namedExec methods with an "IN" clause, we need to manually call a function to handle the parameter expansion. This can be cumbersome and less user-friendly compared to other ORM libraries like GORM, which automatically handle this.

It would be great if SQLx could automatically support the "IN" clause and parameter expansion in these methods, making it more convenient and easier to use.

Example:

Current usage:

query, args, err := sqlx.In("SELECT * FROM users WHERE id IN (?)", []int{1, 2, 3})
if err != nil {
    // handle error
}
query = db.Rebind(query)
rows, err := db.Query(query, args...)

Desired usage:

rows, err := db.Select("SELECT * FROM users WHERE id IN (?)", []int{1, 2, 3})

This enhancement would improve the developer experience and make SQLx more competitive with other ORM libraries. The number of apis can be significantly reduced