bgbatis
Introduction
A sample db tools with binding between sqls and xml nodes, similar like mybatis style.
Features
- Pure native
- No third dependencies
- Easy and simple
- Tx supports
- Multiple DataSource supports
- SQL cache
- Only MySQL support
- Query optimized
Improvement
selectMapper.Exec().Single(&PTR1, &PTR2 ...)
selectMapper.Exec().List(&StructPTR{})
Install
mkdir -p $GOPATH/src/gitee.com/billcoding/bgbatis
cd $GOPATH/src/gitee.com/billcoding
git clone https://gitee.com/billcoding/bgbatis.git bgbatis
require gitee.com/billcoding/bgbatis latest
Usage
userMapper := Default().Init().RegisterDS("master", dsn).Mapper("user")
err := userMapper.Update("insert").Exec("inserted")
userMapper := Default().Init().RegisterDS("master", dsn).Mapper("user")
err := userMapper.Update("delete").Exec(1)
userMapper := Default().Init().RegisterDS("master", dsn).Mapper("user")
err := userMapper.Update("update").Exec("updated", 1)
var batis = Default().Init().RegisterDS("master", dsn)
userMapper := batis.Mapper("user")
userMapper.Select("selectSimple").Exec(func(rows *sql.Rows) {
if rows.Next() {
t := ""
rows.Scan(&t)
fmt.Printf("time is %v\n", t)
}
})
var batis = Default().Init().RegisterDS("master", dsn)
type User struct {
Id int `db:"id"`
Name string `db:"name"`
}
var userList []User
batis.Mapper("user").Select("selectStruct").Exec(func(rows *sql.Rows) {
for rows.Next() {
user := User{}
ScanStruct(rows, &user)
userList = append(userList, user)
}
})
XML Definition
<?xml version="1.0" encoding="UTF-8"?>
<bgbatis-mapper binding="user">
<update id="insert">
insert into user(`name`) values (?)
</update>
<update id="delete">
delete from user where id = ?
</update>
<update id="update">
update user set name = ? where id = ?
</update>
</bgbatis-mapper>
<?xml version="1.0" encoding="UTF-8"?>
<bgbatis-mapper binding="user">
<select id="select">
select * from user
</update>
</bgbatis-mapper>
Multiple DataSource Support
batis.RegisterDS(DSNAME, DSN)
mapper.SelectDS(DSNAME)
Transaction Support
batis.TxMapper(BINDING)
txMapper.Commit()
txMapper.Rollback()
Env Support
BGBATIS_MAPPER_PATH
e.g.
BGBATIS_MAPPER_PATH=/tmp/myapp/mapper
BGBATIS_DSN
e.g.
1. BGBATIS_DSN=root:123@tcp(192.168.1.8:3306)/test
2. BGBATIS_DSN=_,root:123@tcp(192.168.1.8:3306)/test
3. BGBATIS_DSN=master,root:123@tcp(192.168.1.8:3306)/test|slave,root:123@tcp(192.168.1.9:3306)/test