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 ):
- ${}Biao Shi Zhi Jie Ti Huan ,#{}Fang Zhi sqlZhu Ru
- 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
- 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)
- 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
})
- Dang Can Shu De funcFan Hui nil,Ze Ti Jiao
- Dang Can Shu De funcFan Hui Fei nilDe Cuo Wu ,Ze Hui Gun
- 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
- Zhi Jie Zhu Ce xml
gobatis.RegisterMapperData([]byte(main_xml))
Huo
gobatis.RegisterMapperFile(filePath)
- 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}
- 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
- Zhi Jie Zhu Ce template
gobatis.RegisterTemplateData([]byte(main_xml))
Huo
gobatis.RegisterTemplateFile(filePath)
- 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}}
- 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},'%')