Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

acmestack/gobatis

Repository files navigation

gobatis

Jie Shao

gobatisShi Yi Ge golangDe ORMKuang Jia ,Lei Si JavaDe Mybatis. Zhi Chi Zhi Jie Zhi Xing sqlYu Ju Yi Ji Dong Tai sql.

Jian Yi Pei He gobatis-cmdZi Dong Dai Ma , sqlSheng Cheng Gong Ju Shi Yong .

Zhi Chi De Dong Tai sqlBiao Qian :

Biao Qian Shuo Ming
if Dong Tai SQL Tong Chang Yao Zuo De Shi Qing Shi Gen Ju Tiao Jian Bao Han where Zi Ju De Yi Bu Fen .
where where Yuan Su Zhi Hui Zai Zhi Shao You Yi Ge Zi Yuan Su De Tiao Jian Fan Hui SQL Zi Ju De Qing Kuang Xia Cai Qu Cha Ru "WHERE"Zi Ju . Er Qie ,Ruo Yu Ju De Kai Tou Wei "AND"Huo "OR",where Yuan Su Ye Hui Jiang Ta Men Qu Chu .
set set Yuan Su Hui Dong Tai Qian Zhi SET Guan Jian Zi ,Tong Shi Ye Hui Shan Diao Wu Guan De Dou Hao .
include Shi Yong sqlBiao Qian Ding Yi De Yu Ju Ti Huan .
choose
when
otherwise
You Shi Wo Men Bu Xiang Ying Yong Dao Suo You De Tiao Jian Yu Ju ,Er Zhi Xiang Cong Zhong Ze Qi Yi Xiang . Zhen Dui Zhe Chong Qing Kuang ,gobatis Ti Gong Liao choose Yuan Su ,Ta You Dian Xiang switch Yu Ju .
foreach foreach Yun Xu Zhi Ding Yi Ge Ji He ,Sheng Ming Ke Yi Zai Yuan Su Ti Nei Shi Yong De Ji He Xiang (item)He Suo Yin (index)Bian Liang .

Chu Liao xmlZhi Wai ,gobatisYe Zhi Chi Shi Yong go templateDe mapperGe Shi .

Dai Wan Cheng Xiang

  • Ji Xu Wan Shan Dong Tai sqlZhi Chi (trim)
  • Xing Neng You Hua :Zeng Jia Dong Tai sqlHuan Cun (Yi Jing Shi Xian ,Dan Ce Shi Fa Xian Xing Neng Ti Sheng Hen Xiao ,Mu Qian Gai Gong Neng Bei Guan Bi )

Shi Yong

1, Pei Zhi Shu Ju Ku ,Huo De SessionManager

func InitDB() *gobatis.SessionManager {
fac := gobatis.NewFactory(
gobatis.SetMaxConn(100),
gobatis.SetMaxIdleConn(50),
gobatis.SetDataSource(&datasource.MysqlDataSource{
Host: "localhost",
Port: 3306,
DBName: "test",
Username: "root",
Password: "123",
Charset: "utf8",
}))
return gobatis.NewSessionManager(&fac)
}

Zhu Yi :

gobatis.NewFactoryDang Lian Jie Shu Ju Ku Shi Bai Shi Hui Fan Hui nil,Ru Guo Xu Yao Zhi Dao Ju Ti De Shi Bai Yuan Yin Qing Shi Yong :

fac, err := gobatis.CreateFactory(
gobatis.SetMaxConn(100),
gobatis.SetMaxIdleConn(50),
gobatis.SetDataSource(&datasource.MysqlDataSource{
Host: "localhost",
Port: 3306,
DBName: "test",
Username: "root",
Password: "123",
Charset: "utf8",
}))
if err != nil {
t.Log(err)
}

2, Ding Yi Model

Shi Yong tag("column")Ding Yi struct,tagZhi Ding Shu Ju Ku Biao Zhong De column name.

type TestTable struct {
//Zhi Ding table name
TestTable gobatis.TableName "test_table"
//Zhi Ding Biao Zi Duan id
Id int64 `column:"id"`
//Zhi Ding Biao Zi Duan username
Username string `column:"username"`
//Zhi Ding Biao Zi Duan password
Password string `column:"password"`
}

3, Zhu Ce Model

Zuo Yong Shi Ti Gao Zhi Xing Su Du ,Yi Bian Wei Fei Bi Yao Bu Zou ,Xian Zai gobatisHui Zi Dong Huan Cun .

func init() {
var model TestTable
gobatis.RegisterModel(&model)
}

4, Diao Yong

func Run() {
//Chu Shi Hua dbBing Huo De Session Manager
mgr := InitDB()

//Huo De session
session := mgr.NewSession()

ret := TestTable{}

//Shi Yong sessionCha Xun
session.Select("select * from test_table where id = ${0}").Param(100).Result(&ret)

fmt.printf("%v\n", ret)
}

5, Jie Xi Shuo Ming

5.1, Nei Zhi Dong Tai Jie Xi

Nei Zhi Dong Tai Jie Xi Shi gobatisLei MybatisDe Jie Xi Fang An (Mu Qian Shi xml mapperWen Jian He Zhi Jie Zhi Xing sqlDe Mo Ren Jie Xi Fang Shi ):

  1. ${}Biao Shi Zhi Jie Ti Huan ,#{}Fang Zhi sqlZhu Ru
  2. Yu MybatisLei Si ,Yu Ju Zhong ${0}, ${1}, ${2}...${n} Dui Ying De Shi ParamFang Fa Zhong Dui Ying De Bu Ding Can Shu ,Zui Zhong Ti Huan He Diao Yong Di Ceng Driver
  3. ParamFang Fa Jie Shou Jian Dan Lei Xing De Bu Ding Can Shu (string, int, time, floatDeng ), struct, map,Di Ceng Zi Dong Jie Xi Huo De Can Shu ,Yong Fa Wei :
param := TestTable{Username:"test_user"}
ret := TestTable{}
session.Select("select * from test_table where username = #{TestTable.username}").Param(param).Result(&ret)
  1. ParamJie Xi De Can Shu Gui Ze (Qing Wu Bi An Ci Gui Ze Dui Ying SQLYu Ju De Zhan Wei Can Shu ):
  • Jian Dan Lei Xing

    Dui Ying sqlCan Shu Zhong De #{0}, #{1}...

  • mapLei Xing

    Dui Ying sqlCan Shu Zhong De #{key1}, #{key2}...

  • structLei Xing

    Dui Ying sqlCan Shu Zhong De #{StructName.Field1}, #{StructName.Field2}...

5.2, go templateJie Xi

Shi Yong go templateJie Xi ,Zun Xun templateJie Xi Gui Ze ,Shi template mapperWen Jian De Jie Xi Fang Shi .

Ru Yao Yao Xiu Gai Zhi Jie Zhi Xing sqlDe Mo Ren Jie Xi Fang Shi ,Ke Tong Guo :

sessionManager.SetParserFactory(gobatis.TemplateParserFactory)

Huo Zhe

session.SetParserFactory(gobatis.TemplateParserFactory)

Diao Yong Hou Ke Shi Yong templateDe Fang Shi Zhi Jie Jie Xi Zhi Xing sql:

session.Select("SELECT * FROM test_table WHERE id = {{.}}").Param(2).Result(&ret)

gobatisNei Zhi where, set, argZi Ding Yi Han Shu ,Yong Yu Zhi Neng Sheng Cheng Dong Tai sql

argYong Yu Jiang Dui Xiang Dong Tai Zhuan Huan Wei Zhan Wei Fu ,Bing Bao Cun Wei sqlCan Shu ,Ru :

SELECT * FROM TABLE_NAME WHERE name = {{arg .Name}}

Yi mysqlWei Li ,Jiang Jie Xi Wei :

SELECT * FROM TABLE_NAME WHERE name = ?

Tong Shi NameDe Zhi Jiang Zi Dong Bao Cun Wei SQLCan Shu ,Zi Dong Chuan Ru ,Qi Dao Lei Si Nei Zhi Dong Tai Jie Xi Zhong #{MODEL.Name}De Xiao Guo .

6, Shi Wu

Shi Yong

mgr.NewSession().Tx(func(session *gobatis.Session) error {
ret := 0
session.Insert("insert_id").Param(testV).Result(&ret)

t.Logf("ret %d\n", ret)

session.Select("select_id").Param().Result(&testList)

for _, v := range testList {
t.Logf("data: %v", v)
}
//commit
return nil
})
  1. Dang Can Shu De funcFan Hui nil,Ze Ti Jiao
  2. Dang Can Shu De funcFan Hui Fei nilDe Cuo Wu ,Ze Hui Gun
  3. Dang Can Shu De funcNei Pao Chu panic,Ze Hui Gun

7, Sao Miao mapperWen Jian

err := gobatis.ScanMapperFile(${MAPPER_FILE_DIR})
if err != nil {
t.Fatal(err)
}

8, xml

gobatisZhi Chi xmlDe sqlJie Xi Ji Dong Tai sql

  1. Zhi Jie Zhu Ce xml
gobatis.RegisterMapperData([]byte(main_xml))

Huo

gobatis.RegisterMapperFile(filePath)
  1. xmlShi Li

id,username,password,createtime






INSERT INTO test_table (id,username,password,createtime)
VALUES(
#{TestTable.id},
#{TestTable.username},
#{TestTable.password},
#{TestTable.createtime}
)



INSERT INTO test_table (id,username,password,createtime)
VALUES

(#{item.TestTable.id},#{item.TestTable.username},#{item.TestTable.password},#{item.TestTable.createtime})




UPDATE test_table

username = #{TestTable.username}
password = #{TestTable.password}
createtime = #{TestTable.createtime}

WHERE id = #{TestTable.id}



DELETE FROM test_table

AND id = #{TestTable.id}
AND username = #{TestTable.username}
AND password = #{TestTable.password}
AND createtime = #{TestTable.createtime}



  1. namespace

xmlShu Ju Huo Wen Jian Zhu Ce Zhi Hou ,sessionCan Shu sqlidYu xml actionDui Ying Guan Xi Wei :${NAMESPACE}+"."+${ACTION_ID}

Yi 2Zhong De xmlWei Li ,Diao Yong selectDe Fang Shi Wei :

sess.Select("test.selectTestTable").Param(model).Result(&dataList)

9, template

gobatisYe Zhi Chi go templateDe sqlJie Xi Ji Dong Tai sql

  1. Zhi Jie Zhu Ce template
gobatis.RegisterTemplateData([]byte(main_xml))

Huo

gobatis.RegisterTemplateFile(filePath)
  1. templateShi Li
{{define "namespace"}}test{{end}}

{{define "selectTestTable"}}
SELECT id,username,password,createtime FROM test_table
{{where .Id "AND" "id = " (arg .Id) "" | where .Username "AND" "username = " (arg .Username) | where .Password "AND" "password = " (arg .Password) | where .Createtime "AND" "createtime = " (arg .Createtime)}}
{{end}}

{{define "selectTestTableCount"}}
SELECT COUNT(*) FROM test_table
{{where .Id "AND" "id = " (arg .Id) "" | where .Username "AND" "username = " (arg .Username) | where .Password "AND" "password = " (arg .Password) | where .Createtime "AND" "createtime = " (arg .Createtime)}}
{{end}}

{{define "insertTestTable"}}
INSERT INTO test_table(id,username,password,createtime)
VALUES(
{{arg .Id}}, {{arg .Username}}, {{arg .Password}}, {{arg .Createtime}})
{{end}}

{{define "insertBatchTestTable"}}
{{$size := len . | add -1}}
INSERT INTO test_table(id,username,password,createtime)
VALUES {{range $i, $v := .}}
({{arg $v.Id}}, {{arg $v.Username}}, {{arg $v.Password}}, {{arg $v.Createtime}}){{if lt $i $size}},{{end}}
{{end}}
{{end}}

{{define "updateTestTable"}}
UPDATE test_table
{{set .Id "id = " (arg .Id) "" | set .Username "username = " (arg .Username) | set .Password "password = " (arg .Password) | set .Createtime "createtime = " (arg .Createtime)}}
{{where .Id "AND" "id = " (arg .Id) ""}}
{{end}}

{{define "deleteTestTable"}}
DELETE FROM test_table
{{where .Id "AND" "id = " (arg .Id) "" | where .Username "AND" "username = " (arg .Username) | where .Password "AND" "password = " (arg .Password) | where .Createtime "AND" "createtime = " (arg .Createtime)}}
{{end}}
  1. namespace

templateShu Ju Huo Wen Jian Ke Ding Yi Yi Ge Ming Cheng Wei namespaceDe Zi Mo Ban ,Yong Yi Ding Yi namespace.

templateShu Ju Huo Wen Jian Zhu Ce Zhi Hou ,sessionCan Shu sql idYu Mo Ban Dui Ying Guan Xi Wei :${NAMESPACE}+"."+${ACTION_ID}

Yi 2Zhong De templateWei Li ,Diao Yong selectDe Fang Shi Wei :

sess.Select("test.selectTestTable").Param(model).Result(&dataList)

10, gobatis-cmdSheng Cheng Wen Jian Shi Yong Shi Li

Can Kao cmd_test

11, SQLYu Ju Gou Jian Qi

gobatis xmlTe Xing You Fei Chang Qiang Da De Dong Tai SQLSheng Cheng Fang An ,Dang Xu Yao Zai Dai Ma Zhong Qian Ru SQLYu Ju Shi ,Ye Ke Shi Yong SQLYu Ju Gou Jian Qi :

import "github.com/xfali/gobatis/builder"
str := builder.Select("A.test1", "B.test2").
Select("B.test3").
From("test_a AS A").
From("test_b AS B").
Where("id = 1").
And().
Where("name=2").
GroupBy("name").
OrderBy("name").
Desc().
Limit(5, 10).
String()
t.Log(str)

Qi Ta

1, Fen Ye

Shi Yong pagehelper: gobatisDe Pei Tao Fen Ye Gong Ju

go get github.com/xfali/pagehelper

2, Da Yu /Xiao Yu Zhuan Yi

Shi Yong xml mapperWen Jian Hui Chu Xian Da Yu Hao " > ", Xiao Yu Hao " < "Hao Jie Xi De Wen Ti ,gobatisShi Yong CDATAGui Bi Ci Wen Ti .

]]>

3, Mo Hu Cha Xun Zhi Chi

Shi Yong LIKE CONCAT('%',#{field},'%')

Ju Li :

"> SELECT FROM `TEST_TABLE`

AND `username` LIKE CONCAT('%',#{TestTable.username},'%')

About

golang's ORM framework, similar to Java's Mybatis. supports direct execution of sql statements, xml, go template, and dynamic sql.

Topics

Resources

Readme

License

Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing

Stars

Watchers

Forks

Contributors