xormplus / xorm

xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常简便。本库是基于原版xorm的定制增强版本,为xorm提供类似ibatis的配置文件及动态SQL支持,支持AcitveRecord操作
BSD 3-Clause "New" or "Revised" License
1.55k stars 222 forks source link

原生SQL使用IN查询时,无法生成IN查询语句 #73

Closed JasonkayZK closed 4 years ago

JasonkayZK commented 4 years ago

原生SQL使用IN查询时,无法生成IN查询语句

例如:

sql := ` select * from test_table where id=? `
engine.SQL(sql).In(`in_cols`, cols).QueryString()

生成的SQL语句为:select * from test_table where id=?,并没有IN语句

xormplus commented 4 years ago

@JasonkayZK In函数是ORM函数,SQL函数是RAW函数,两者是不能这样混用的

JasonkayZK commented 4 years ago

@JasonkayZK In函数是ORM函数,SQL函数是RAW函数,两者是不能这样混用的

好的,这里也提供一种原生SQL使用IN操作的方法:

sql := ` ... `

if len(dictIds) > 0 {
    sql = sql + `and dictId in (` + strings.TrimRight(strings.Repeat(`?,`, len(dictIds)), `,`) + `)`
    for _, id := range dictIds {
    args = append(args, id)
    }
}