go代码生成器、目标适配:
- Mysql、Postgresql与Gorm、Xorm
- 一键生成model、service、handle代码
- 生成Java Mybatis-Plus风格API
go get github.com/yunboom/generate
- 生成结构体
package main
import (
"fmt"
"github.com/yunboom/generate"
"github.com/yunboom/generate/config"
"github.com/yunboom/generate/datebase"
"github.com/yunboom/generate/datebase/driver"
)
const MysqlDSN = "root:root@(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
const PostgresDSN = "host=localhost port=54321 user=postgres dbname=clubdb1 password=root sslmode=disable"
func main() {
gen := generate.New(config.New(
config.WithModelPath("/Users/zonst/Downloads/"), //model 代码输出路径
config.WithDaoPath("/Users/zonst/Downloads/"), //dao 代码输出路径
))
gen.UseDB(datebase.OpenGorm(driver.Postgres, PostgresDSN)) //使用gorm mysql
gen.BindModel(gen.GenModelAs("users", "User")) //绑定模型
if err := gen.Execute(); err != nil {
fmt.Println(err)
}
}
-
CRUD接口
- Insert
// 插入一条记录 db, _ = gorm.Open(postgres.Open(PostgresDSN)) dao = NewUserDao(db.Debug()) err := dao.Insert(&User{ Username: "123", Password: "123", Nick: "张三", })
- Update
//UPDATE "users" SET "password"='321' WHERE id = 123 err := dao.UpdateById(123, &User{Password: "321"})
- Delete
//DELETE FROM "users" WHERE id = 3 err := dao.DeleteById(3) //DELETE FROM "users" WHERE id in (5,6,7) err := dao.DeleteBatchIds(5, 6, 7) //DELETE FROM "users" WHERE "users"."username" = '123' AND id > 10 wrapper := dao.QueryWrapper(&User{Username: "123"}).Where("id > ?", 10) err := dao.DeleteByWrapper(wrapper)
- Select
//根据id查询 user, err := dao.SelectById(1) //查询所有 SELECT * FROM "users" wrapper := dao.QueryWrapper(nil) userList, err := dao.SelectList(wrapper) //SELECT * FROM "users" WHERE "users"."username" = '123' AND id > 0 ORDER BY id desc wrapper := dao.QueryWrapper(&User{Username: "123"}).Where("id > ?", 0).OrderBy("id desc") userList, err := dao.SelectList(wrapper) //SELECT * FROM "users" WHERE "users"."username" = '123' AND id > 10 ORDER BY "users"."id" LIMIT 1 wrapper := dao.QueryWrapper(&User{Username: "123"}).Where("id > ?", 10) user, err := dao.SelectOne(wrapper) //SELECT count(*) FROM "users" count, err := dao.SelectCount(dao.QueryWrapper(nil)) //SELECT * FROM "users" LIMIT 2 OFFSET 1 userList, err := dao.SelectPage(2, 1, dao.QueryWrapper(nil)) //[map[Id:1 Nick:张三 Password:123 Username:123] map[Id:2 Nick:李四 Password:456 Username:456]] userMaps, err := dao.SelectMaps(dao.QueryWrapper(nil))