12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- When using xorm, you can create multiple orm engines, an engine means a database.
- */
- package main
- import (
- // Core.
- "fmt"
- "os"
- // SQLite 3
- _ "github.com/mattn/go-sqlite3"
- // MySQL. Use either driver.
- // _ "github.com/go-sql-driver/mysql"
- // _ "github.com/ziutek/mymysql"
- // PostgreSQL
- // _ "github.com/lib/pq"
- // SQL Server
- // _ "github.com/lunny/godbc"
- // XORM.
- "github.com/go-xorm/xorm"
- // Others.
- // "github.com/davecgh/go-spew/spew"
- "github.com/go-xorm/core"
- )
- func check(err error) {
- if err != nil {
- fmt.Println(err.Error())
- os.Exit(1)
- }
- }
- func NewOrm() *xorm.Engine {
- // NewEngine parameters are those of the SQL driver: driver and DSN.
- engine, err := xorm.NewEngine("sqlite3", "./test.db")
- check(err)
- fmt.Println("ORM loaded")
- return engine
- }
- func setupLogging(engine *xorm.Engine) {
- // Enable built-in Logging features.
- engine.ShowSQL = true
- engine.ShowDebug = true
- engine.ShowErr = true
- engine.ShowWarn = true
- // Optional: declare a custom logger.
- f, err := os.Create("sql.log")
- check(err)
- engine.SetLogger(xorm.NewSimpleLogger(f))
- }
- func setupConnections(engine *xorm.Engine) {
- // Optional: limit connections.
- const CONNECTION_LIMIT = 4
- engine.SetMaxOpenConns(CONNECTION_LIMIT)
- // The number of idle connections is bound by the number of open ones.
- engine.SetMaxIdleConns(CONNECTION_LIMIT)
- }
- func setupMapping(engine *xorm.Engine) {
- same := core.SameMapper{}
- gonic := core.GonicMapper{}
- snake := core.SnakeMapper{}
- // Global mapping. Default is snake.
- engine.SetMapper(same)
- // Table-specific mapping.
- engine.SetTableMapper(gonic)
- // Column-specific mapping.
- engine.SetColumnMapper(snake)
- }
- func main() {
- var engine *xorm.Engine = NewOrm()
- setupLogging(engine)
- setupConnections(engine)
- setupMapping(engine)
- // Not needed: called automatically on exit.
- engine.Close()
- fmt.Println("ORM closed")
- }
|