-
Notifications
You must be signed in to change notification settings - Fork 8
使用gobatis
zouchangfu edited this page Jul 27, 2022
·
1 revision
获取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()
推荐专门创建一个初始化数据库的工具类来连接数据库,例如:
注意:如果你使用的是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))
}