beego orm包除了支持model查询的方式,也支持直接编写sql语句的方式查询数据。
sql原生查询有如下特点:
使用 Raw SQL 查询,无需使用 ORM 表定义
多数据库,都可直接使用占位符号 ?,自动转换
查询时的参数,支持使用 Model Struct 和 Slice, Array
1.原生sql查询
在遇到比较复杂的查询的时候,使用sql语句更加灵活和直观,也比较容易把控sql查询的性能。
1.1. 执行插入、更新、删除SQL语句
执行insert、update、delete语句,需要使用Exec函数,执行后返回 sql.Result 对象,通过sql.Result对象我们可以查询最新插入的自增ID,影响行数。
例子:
// 创建orm对象
o := orm.NewOrm()
// insert
// 使用Raw函数设置sql语句和参数
res, err := o.Raw("insert into users(username, password) values(?, ?)", "tizi365", "123456").Exec()
// 插入数据的自增id
id := res.LastInsertId()
// update
res, err := o.Raw("update users set password=? where username=?", "654321", "tizi365").Exec()
// 获取更新数据影响的行数