Skip to content

CRUD使用

zouchangfu edited this page Jul 27, 2022 · 1 revision

下面我们来通过实际的例子来对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。

image

.Param(model),封装传入的参数条件,这个条件会在XML中的where标签中使用。

image

.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插入语句。

image

.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作为条件,更新数据库数据。

image

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删除语句。

image

.Result(&ret)封装删除结果,删除成功返回1,删除失败返回0.

总结

其实基础的CRUD操作,非常的简答方便,一句话来说就是调用XML或者Template中的SQL语句来完成操作。