方法1、使用语言的for语句循环生成SQL语句中的“?”,类似这样:
新建方法
func placeholders(n int) string {
var b strings.Builder
for i := 0; i 0 {
b.WriteString("?")
}
return b.String()
}
调用方法:
var ids []interface{}
err := c.BindJSON(&ids)
query := fmt.Sprintf("delete from device where id in (%s)", placeholders(len(ids)))
_, err = models.DB.Exec(query, ids...)
...
方法2、 sqlx内置了一个In()方法用于处理这种情况,可以使得对in的处理十分优雅。
其实该方法的实现和我们方法1的处理原理类似。
import (
"github.com/jmoiron/sqlx"
)
var ids []int
err := c.BindJSON(&ids)
...
query1, args, err := sqlx.In("delete from device where id in (?)", ids)
_, err = models.DB.Exec(query1, args ...)
...
作者:d294083434