Skip to content

使用gobatis

zouchangfu edited this page Jul 27, 2022 · 1 revision

下载gobatis

获取gobatis

go get https://github.com/acmestack/gobatis

获取SQL驱动

go get github.com/go-sql-driver/mysql

配置

创建数据库连接

func connect() factory.Factory {
  return gobatis.NewFactory(
    gobatis.SetMaxConn(100),
    gobatis.SetMaxIdleConn(50),
    gobatis.SetDataSource(&datasource.MysqlDataSource{
      Host:     "localhost", // 数据库IP
      Port:     3306,        // 数据库端口
      DBName:   "test",      // 数据库名
      Username: "root",      // 数据库用户名
      Password: "123456",    // 数据库密码
      Charset:  "utf8",      // 编码格式
    }))
}

这里使用的是MysqlDataSource作为数据源,目前支持Mysql,Postgre,Sqlite

注册mapper文件

创建session管理器

var SessionManager *gobatis.SessionManager

func init() {
  err := gobatis.RegisterMapperFile("./xml/test_table_mapper.xml")
  if err != nil {
    fmt.Println("parse xml is error:", err.Error())
  }
  SessionManager = gobatis.NewSessionManager(connect())
}

创建session

每次使用的时候,直接通过session管理器创建一个新的session传入到方法即可。

session := SessionManager.NewSession()

db工具

推荐专门创建一个初始化数据库的工具类来连接数据库,例如:

注意:如果你使用的是Mysql数据库,_ "github.com/go-sql-driver/mysql" 这个是必须要引入的。使用什么数据库就引入哪个数据库的驱动。

package db

import (
  "fmt"
  "github.com/acmestack/gobatis"
  "github.com/acmestack/gobatis/datasource"
  "github.com/acmestack/gobatis/factory"
  _ "github.com/go-sql-driver/mysql"
)

var SessionManager *gobatis.SessionManager

func init() {
  // 需要注册mapper到gobatis中
  err := gobatis.RegisterMapperFile("./xml/test_table_mapper.xml")
  if err != nil {
    fmt.Println("parse xml is error:", err.Error())
  }
  SessionManager = gobatis.NewSessionManager(connect())
}

func connect() factory.Factory {
  return gobatis.NewFactory(
    gobatis.SetMaxConn(100),
    gobatis.SetMaxIdleConn(50),
    gobatis.SetDataSource(&datasource.MysqlDataSource{ 
      Host:     "localhost", // 数据库IP
      Port:     3306,        // 数据库端口
      DBName:   "test",      // 数据库名
      Username: "root",      // 数据库用户名
      Password: "123456",    // 数据库密码
      Charset:  "utf8",      // 编码格式
    }))
}

使用

session := db.SessionManager.NewSession()

例如:

func TestTestTable_Select(t *testing.T) {
  table := &TestTable{}
  session := db.SessionManager.NewSession()
  tables, err := table.Select(db.SessionManager.NewSession())
  if err != nil {
    fmt.Println(err)
  }
  marshal, _ := json.Marshal(tables)
  fmt.Println(string(marshal))
}
Clone this wiki locally