-
Notifications
You must be signed in to change notification settings - Fork 8
CRUD使用
下面我们来通过实际的例子来对CRUD进行演示。
注意:所有的CRUD的操作都是基于XML来完成的。如果你还没有尝试使用过gobatis的example例子,请查看快速入门中的gobatis-example例子。
以下是对example例子CRUD的更加详细的说明。
传入session和实体条件。
func SelectTestTable(sess *gobatis.Session, model TestTable) ([]TestTable, error) {
var dataList []TestTable
err := sess.Select("test.selectTestTable").Param(model).Result(&dataList)
return dataList, err
}
test.selectTestTable
指的是XML(Template)文件中SQL语句
test
指的是作用域,通过这个作用域区分调用的是哪个XML文件的SQL语句,selectTestTable
指的是XML文件中id。
.Param(model)
,封装传入的参数条件,这个条件会在XML中的where标签中使用。
.Result(&dataList)
查询数据库数据,把结果封装到dataList切片中,注意这里传入的是指针类型
。
传入session和待插入到数据库的实体。
func InsertTestTable(sess *gobatis.Session, model TestTable) (int64, int64, error) {
var ret int64
runner := sess.Insert("test.insertTestTable").Param(model)
err := runner.Result(&ret)
id := runner.LastInsertId()
return ret, id, err
}
test.insertTestTable
调用的是XML插入语句。
.Param(model)
model指的是待插入到数据库的实体。
runner.Result(&ret)
把返回结果封装到ret变量中,插入成功返回1,插入失败返回0
runner.LastInsertId()
获取数据生成的主键Id
传入session和实体条件。
func UpdateTestTable(sess *gobatis.Session, model TestTable) (int64, error) {
var ret int64
err := sess.Update("test.updateTestTable").Param(model).Result(&ret)
return ret, err
}
test.updateTestTable
调用的是XML更新语句,默认[gobatis-cmd](https://github.com/acmestack/gobatis-cmd)生成的代码通过Id作为条件,更新数据库数据。
Result(&ret)
封装更新结果,更新成功返回1,更新失败返回0.
传入session和实体条件。
func DeleteTestTable(sess *gobatis.Session, model TestTable) (int64, error) {
var ret int64
err := sess.Delete("test.deleteTestTable").Param(model).Result(&ret)
return ret, err
}
test.deleteTestTable
调用的是XML删除语句。
.Result(&ret)
封装删除结果,删除成功返回1,删除失败返回0.
其实基础的CRUD操作,非常的简答方便,一句话来说就是调用XML或者Template中的SQL语句来完成操作。