generate
介绍
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))