浏览代码

新增批量处理SqlMap和SqlTemplate的相关方法

xormplus 9 年之前
父节点
当前提交
d5cfbd3444
共有 3 个文件被更改,包括 110 次插入9 次删除
  1. 3 3
      sessionplus.go
  2. 55 1
      sqlmap.go
  3. 52 5
      sqltemplate.go

+ 3 - 3
sessionplus.go

@@ -73,9 +73,9 @@ func (resultBean ResultBean) Xml() (bool, string, error) {
 }
 
 //func str2byte(s string) []byte {
-//    x := (*[2]uintptr)unsafe.Pointer(&s)
-//    h := [3]uintptr{x[0],x[1],x[1]}
-//    return *(*[]byte)(unsafe.Pointer(&h))
+//	x := (*[2]uintptr)(unsafe.Pointer(&s))
+//	h := [3]uintptr{x[0], x[1], x[1]}
+//	return *(*[]byte)((unsafe.Pointer(&h)))
 //}
 
 func (resultBean ResultBean) XmlIndent(prefix string, indent string, recordTag string) (bool, string, error) {

+ 55 - 1
sqlmap.go

@@ -29,9 +29,15 @@ type Sql struct {
 	Id    string `xml:"id,attr"`
 }
 
+func (sqlMap *SqlMap) checkNilAndInit() {
+	if sqlMap.Sql == nil {
+		sqlMap.Sql = make(map[string]string, 100)
+	}
+}
+
 func (engine *Engine) InitSqlMap(options ...SqlMapOptions) error {
 	var opt SqlMapOptions
-	engine.SqlMap.Sql = make(map[string]string, 100)
+
 	if len(options) > 0 {
 		opt = options[0]
 	}
@@ -63,6 +69,9 @@ func (engine *Engine) InitSqlMap(options ...SqlMapOptions) error {
 }
 
 func (engine *Engine) LoadSqlMap(filepath string) error {
+	if len(engine.SqlMap.Extension) == 0 {
+		engine.SqlMap.Extension = ".xml"
+	}
 	if strings.HasSuffix(filepath, engine.SqlMap.Extension) {
 		err := engine.loadSqlMap(filepath)
 		if err != nil {
@@ -73,7 +82,26 @@ func (engine *Engine) LoadSqlMap(filepath string) error {
 	return nil
 }
 
+func (engine *Engine) BatchLoadSqlMap(filepathSlice []string) error {
+	if len(engine.SqlMap.Extension) == 0 {
+		engine.SqlMap.Extension = ".xml"
+	}
+	for _, filepath := range filepathSlice {
+		if strings.HasSuffix(filepath, engine.SqlMap.Extension) {
+			err := engine.loadSqlMap(filepath)
+			if err != nil {
+				return err
+			}
+		}
+	}
+
+	return nil
+}
+
 func (engine *Engine) ReloadSqlMap(filepath string) error {
+	if len(engine.SqlMap.Extension) == 0 {
+		engine.SqlMap.Extension = ".xml"
+	}
 	if strings.HasSuffix(filepath, engine.SqlMap.Extension) {
 		err := engine.reloadSqlMap(filepath)
 		if err != nil {
@@ -84,7 +112,24 @@ func (engine *Engine) ReloadSqlMap(filepath string) error {
 	return nil
 }
 
+func (engine *Engine) BatchReloadSqlMap(filepathSlice []string) error {
+	if len(engine.SqlMap.Extension) == 0 {
+		engine.SqlMap.Extension = ".xml"
+	}
+	for _, filepath := range filepathSlice {
+		if strings.HasSuffix(filepath, engine.SqlMap.Extension) {
+			err := engine.loadSqlMap(filepath)
+			if err != nil {
+				return err
+			}
+		}
+	}
+
+	return nil
+}
+
 func (engine *Engine) loadSqlMap(filepath string) error {
+
 	info, err := os.Lstat(filepath)
 	if err != nil {
 		return err
@@ -103,6 +148,7 @@ func (engine *Engine) loadSqlMap(filepath string) error {
 }
 
 func (engine *Engine) reloadSqlMap(filepath string) error {
+
 	info, err := os.Lstat(filepath)
 	if err != nil {
 		return err
@@ -146,6 +192,8 @@ func (sqlMap *SqlMap) paresSql(filepath string) error {
 		return err
 	}
 
+	sqlMap.checkNilAndInit()
+
 	var result Result
 	err = xml.Unmarshal(content, &result)
 	if err != nil {
@@ -164,6 +212,7 @@ func (engine *Engine) AddSql(key string, sql string) {
 }
 
 func (sqlMap *SqlMap) addSql(key string, sql string) {
+	sqlMap.checkNilAndInit()
 	sqlMap.Sql[key] = sql
 }
 
@@ -172,6 +221,7 @@ func (engine *Engine) UpdateSql(key string, sql string) {
 }
 
 func (sqlMap *SqlMap) updateSql(key string, sql string) {
+	sqlMap.checkNilAndInit()
 	sqlMap.Sql[key] = sql
 }
 
@@ -180,6 +230,7 @@ func (engine *Engine) RemoveSql(key string) {
 }
 
 func (sqlMap *SqlMap) removeSql(key string) {
+	sqlMap.checkNilAndInit()
 	delete(sqlMap.Sql, key)
 }
 
@@ -188,6 +239,7 @@ func (engine *Engine) BatchAddSql(sqlStrMap map[string]string) {
 }
 
 func (sqlMap *SqlMap) batchAddSql(sqlStrMap map[string]string) {
+	sqlMap.checkNilAndInit()
 	for k, v := range sqlStrMap {
 		sqlMap.Sql[k] = v
 	}
@@ -198,6 +250,7 @@ func (engine *Engine) BatchUpdateSql(sqlStrMap map[string]string) {
 }
 
 func (sqlMap *SqlMap) batchUpdateSql(sqlStrMap map[string]string) {
+	sqlMap.checkNilAndInit()
 	for k, v := range sqlStrMap {
 		sqlMap.Sql[k] = v
 	}
@@ -208,6 +261,7 @@ func (engine *Engine) BatchRemoveSql(key []string) {
 }
 
 func (sqlMap *SqlMap) batchRemoveSql(key []string) {
+	sqlMap.checkNilAndInit()
 	for _, v := range key {
 		delete(sqlMap.Sql, v)
 	}

+ 52 - 5
sqltemplate.go

@@ -19,9 +19,15 @@ type SqlTemplateOptions struct {
 	Extension string
 }
 
+func (sqlTemplate *SqlTemplate) checkNilAndInit() {
+	if sqlTemplate.Template == nil {
+		sqlTemplate.Template = make(map[string]*pongo2.Template, 100)
+	}
+}
+
 func (engine *Engine) InitSqlTemplate(options ...SqlTemplateOptions) error {
 	var opt SqlTemplateOptions
-	engine.SqlTemplate.Template = make(map[string]*pongo2.Template, 100)
+
 	if len(options) > 0 {
 		opt = options[0]
 	}
@@ -51,6 +57,9 @@ func (engine *Engine) InitSqlTemplate(options ...SqlTemplateOptions) error {
 }
 
 func (engine *Engine) LoadSqlTemplate(filepath string) error {
+	if len(engine.SqlTemplate.Extension) == 0 {
+		engine.SqlTemplate.Extension = ".stpl"
+	}
 	if strings.HasSuffix(filepath, engine.SqlTemplate.Extension) {
 		err := engine.loadSqlTemplate(filepath)
 		if err != nil {
@@ -61,7 +70,26 @@ func (engine *Engine) LoadSqlTemplate(filepath string) error {
 	return nil
 }
 
+func (engine *Engine) BatchLoadSqlTemplate(filepathSlice []string) error {
+	if len(engine.SqlTemplate.Extension) == 0 {
+		engine.SqlTemplate.Extension = ".stpl"
+	}
+	for _, filepath := range filepathSlice {
+		if strings.HasSuffix(filepath, engine.SqlTemplate.Extension) {
+			err := engine.loadSqlTemplate(filepath)
+			if err != nil {
+				return err
+			}
+		}
+	}
+
+	return nil
+}
+
 func (engine *Engine) ReloadSqlTemplate(filepath string) error {
+	if len(engine.SqlTemplate.Extension) == 0 {
+		engine.SqlTemplate.Extension = ".stpl"
+	}
 	if strings.HasSuffix(filepath, engine.SqlTemplate.Extension) {
 		err := engine.reloadSqlTemplate(filepath)
 		if err != nil {
@@ -72,6 +100,22 @@ func (engine *Engine) ReloadSqlTemplate(filepath string) error {
 	return nil
 }
 
+func (engine *Engine) BatchReloadSqlTemplate(filepathSlice []string) error {
+	if len(engine.SqlTemplate.Extension) == 0 {
+		engine.SqlTemplate.Extension = ".stpl"
+	}
+	for _, filepath := range filepathSlice {
+		if strings.HasSuffix(filepath, engine.SqlTemplate.Extension) {
+			err := engine.loadSqlTemplate(filepath)
+			if err != nil {
+				return err
+			}
+		}
+	}
+
+	return nil
+}
+
 func (engine *Engine) loadSqlTemplate(filepath string) error {
 	info, err := os.Lstat(filepath)
 	if err != nil {
@@ -132,6 +176,7 @@ func (sqlTemplate *SqlTemplate) paresSqlTemplate(filename string, filepath strin
 		return err
 	}
 
+	sqlTemplate.checkNilAndInit()
 	sqlTemplate.Template[filename] = template
 
 	return nil
@@ -148,7 +193,7 @@ func (sqlTemplate *SqlTemplate) addSqlTemplate(key string, sqlTemplateStr string
 	if err != nil {
 		return err
 	}
-
+	sqlTemplate.checkNilAndInit()
 	sqlTemplate.Template[key] = template
 
 	return nil
@@ -165,7 +210,7 @@ func (sqlTemplate *SqlTemplate) updateSqlTemplate(key string, sqlTemplateStr str
 	if err != nil {
 		return err
 	}
-
+	sqlTemplate.checkNilAndInit()
 	sqlTemplate.Template[key] = template
 
 	return nil
@@ -177,6 +222,7 @@ func (engine *Engine) RemoveSqlTemplate(key string) {
 }
 
 func (sqlTemplate *SqlTemplate) removeSqlTemplate(key string) {
+	sqlTemplate.checkNilAndInit()
 	delete(sqlTemplate.Template, key)
 }
 
@@ -186,7 +232,7 @@ func (engine *Engine) BatchAddSqlTemplate(key string, sqlTemplateStrMap map[stri
 }
 
 func (sqlTemplate *SqlTemplate) batchAddSqlTemplate(key string, sqlTemplateStrMap map[string]string) error {
-
+	sqlTemplate.checkNilAndInit()
 	for k, v := range sqlTemplateStrMap {
 		template, err := pongo2.FromString(v)
 		if err != nil {
@@ -206,7 +252,7 @@ func (engine *Engine) BatchUpdateSqlTemplate(key string, sqlTemplateStrMap map[s
 }
 
 func (sqlTemplate *SqlTemplate) batchUpdateSqlTemplate(key string, sqlTemplateStrMap map[string]string) error {
-
+	sqlTemplate.checkNilAndInit()
 	for k, v := range sqlTemplateStrMap {
 		template, err := pongo2.FromString(v)
 		if err != nil {
@@ -225,6 +271,7 @@ func (engine *Engine) BatchRemoveSqlTemplate(key []string) {
 }
 
 func (sqlTemplate *SqlTemplate) batchRemoveSqlTemplate(key []string) {
+	sqlTemplate.checkNilAndInit()
 	for _, v := range key {
 		delete(sqlTemplate.Template, v)
 	}