ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 初始化SqlMap配置文件及SqlTemplate模板 xorm提供了SqlMap配置和SqlTemplate功能,如创建引擎,且需要使用SqlMap配置和SqlTemplate功能,参考如下方式创建引擎并初始化SqlMap配置文件及SqlTemplate模板 ~~~ var err error engine, err = xorm.NewPostgreSQL("postgres://postgres:root@localhost:5432/testdb?sslmode=disable") if err != nil { t.Fatal(err) } /*-------------------------------------------------------------------------------------------------- 1、使用RegisterSqlMap()注册SqlMap配置 2、RegisterSqlTemplate()方法注册SSqlTemplate模板配置 3、SqlMap配置文件总根目录和SqlTemplate模板配置文件总根目录可为同一目录 --------------------------------------------------------------------------------------------------*/ //注册SqlMap配置,可选功能,如应用中无需使用SqlMap,可无需初始化 //此处使用xml格式的配置,配置文件根目录为"./sql/oracle",配置文件后缀为".xml" err = x.RegisterSqlMap(xorm.Xml("./sql/oracle", ".xml")) if err != nil { t.Fatal(err) } //注册动态SQL模板配置,可选功能,如应用中无需使用SqlTemplate,可无需初始化 //此处注册动态SQL模板配置,使用Pongo2模板引擎,配置文件根目录为"./sql/oracle",配置文件后缀为".stpl" err = x.RegisterSqlTemplate(xorm.Pongo2("./sql/oracle", ".stpl")) if err != nil { t.Fatal(err) } //开启SqlMap配置文件和SqlTemplate配置文件更新监控功能,将配置文件更新内容实时更新到内存,如无需要可以不调用该方法 err = engine.StartFSWatcher() if err != nil { t.Fatal(err) } ~~~ * <b>db.RegisterSqlMap()过程</b> * 使用RegisterSqlMap()方法指定SqlMap配置文件文件格式,配置文件总根目录,配置文件后缀名,RegisterSqlMap()方法按指定目录遍历所配置的目录及其子目录下的所有xml配置文件(<a href="https://github.com/xormplus/xorm/blob/master/test/sql/oracle/studygolang.xml">配置文件样例</a>)或json配置文件(<a href="https://github.com/xormplus/xorm/blob/master/test/sql/oracle/test.json">配置文件样例</a>) * 解析所有配置SqlMap的xml配置文件或json配置文件 * xml配置文件中sql标签的id属性值作为SqlMap的key,如有重名id,则后加载的覆盖之前加载的配置sql条目 * json配置文件中key值作为SqlMap的key,如有重名key,则后加载的覆盖之前加载的配置sql条目 * json配置文件中key和xml配置文件中sql标签的id属性值有相互重名的,则后加载的覆盖之前加载的配置sql条目 * 配置文件中sql配置会读入内存并缓存 * 由于SqlTemplate模板能完成更多复杂组装和特殊场景需求等强大功能,故SqlMap的xml或json只提供这种极简配置方式,非ibatis的OGNL的表达式实现方式 * <b>db.RegisterSqlTemplate()过程</b> * 使用RegisterSqlTemplate()方法指定SqlTemplate模板的模板引擎(支持[pongo2](https://github.com/flosch/pongo2)、[jet](https://github.com/CloudyKit/jet)、[html/template](https://github.com/golang/go/tree/master/src/html/template)3种模板引擎,但只能选用一种,不能同时混用),配置文件总根目录,配置文件后缀名,RegisterSqlTemplate()方法按指定目录遍历所配置的目录及其子目录及其子目录下的所有stpl模板文件(<a href="https://github.com/xormplus/xorm/blob/master/test/sql/oracle/select.example.stpl">模板文件样例</a>) * 使用指定模板引擎解析stpl模板文件 * stpl模板文件名作为SqlTemplate存储的key(不包含目录路径),如有不同路径下出现同名文件,则后加载的覆盖之前加载的配置模板内容 * stpl模板内容会读入内存并缓存