Go数据库操作:3、SqlMap及SqlTemplate模板

       注意: 这边看的包是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...)
发布了117 篇原创文章 · 获赞 15 · 访问量 5598

猜你喜欢

转载自blog.csdn.net/qq_34326321/article/details/105250581