文章目录
注意: 这边看的包是xormplus下面的包,如果是原来的xorm包,是不支持sqlMap或者template的操作的,这边的安装方式是:go get -u github.com/xormplus/xorm
这边记录的主要还是以json方式的,所以如果需要使用其他方式,请查看原文:SqlMap及SqlTemplate模板
1、注册sqlMap(json方式)
1、初始化引擎
import (
_ "github.com/go-sql-driver/mysql"
"github.com/xormplus/xorm"
)
var engine *xorm.Engine
func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123@/test?charset=utf8")
}
2、注册json文件的sqlMap
err = x.RegisterSqlMap(xorm.Json("./sql/mysql", ".json"))
if err != nil {
t.Fatal(err)
}
3、Json文件配置
配置的话其实就是key-value的形式,一个key对应一个sql这样,后面的话,通过key的值来获取对应的sql,比如下面这个,具体参考json模板样式:
{
"json_selectAllArticle": "select id,title,createdatetime,content from Article where id in (?1,?2)",
"json_selectStudentById1": "select * from user where id=?id and 1=1",
"json_sql_2_1": "select id,title,createdatetime,content from Article where id = ?id",
"json_sql_i_1": "INSERT INTO categories VALUES (?id, ?name, ?counts, ?orders, ?pid)",
"json_sql_i_2": "INSERT INTO categories VALUES (?id, ?name, ?counts, ?orders, ?pid)",
"json_category": "select * from category",
"json_category-16-17": "select * from category where id in (16,17) and name='dd'"
}
2、SqlTemplate
SqlTemplate其实我也不是很明白具体的用法,后面再看吧,具体的参考上面的原文地址。
3、文件更新监控功能
开启SqlMap配置文件和SqlTemplate配置文件更新监控功能,将配置文件更新内容实时更新到内存,如无需要可以不调用该方法:
//该监控模式下,如删除配置文件,内存中不会删除相关配置
engine.StartFSWatcher() //开启监控
engine.StopFSWatcher() //停止监控
4、模板加密存储及解析
查看原文:SqlMap配置文件及SqlTemplate模板加密存储及解析,这个应该用的不会很多。
5、手动管理
这个手动管理就是在你没有初始化的情况下有,也可以在需要的地方实现新增、更新、删除sqlMap或者sqlTemplate的操作。
这边只记录sqlMap的增删改查的方式,sqlTemplate类似不做记录,可以直接查看原文。
1、新增
engine.LoadSqlMap(filepath) //加载指定文件的SqlMap配置
engine.BatchLoadSqlMap([]filepath) //批量加载指定文件的SqlMap配置
engine.AddSql(key, sql) //新增一条SqlMap配置
2、删除
engine.RemoveSql(key) //删除一条SqlMap配置
engine.BatchAddSql(map[key]sql) //批量新增SqlMap配置
engine.BatchRemoveSql([]key) //批量删除SqlMap配置
3、修改
engine.ReloadSqlMap(filepath) //重新加载指定文件的SqlMap配置
engine.BatchReloadSqlMap([]filepath) //批量重新加载指定文件的SqlMap配置
engine.UpdateSql(key, sql) //更新一条SqlMap配置
engine.BatchUpdateSql(map[key]sql) //批量更新SqlMap配置
4、查询
engine.GetSqlMap("Test_GetSqlMap_1") //返回key为Test_GetSqlMap_1的SqlMap配置
engine.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3") //返回key为Test_GetSqlMap_1,Test_GetSqlMap_3的SqlMap配置,如果key对应的sql不存在则返回空字符串
engine.GetSqlMap([]string{"Test_GetSqlMap_1", "Test_GetSqlMap_3"}) //支持字符串数组形式参数
engine.GetSqlMap([]string{"Test_GetSqlMap_1", "Test_GetSqlMap_3"},"Test_GetSqlMap_2") //支持字符串数组形式和字符串参数混用
engine.GetSqlMap(key...)