Keine Beschreibung

xormplus cb69693b87 Update README.md vor 11 Jahren
test 7bd7481c0f 修改session.Find()API vor 11 Jahren
.gitignore 52a602da39 Initial commit vor 11 Jahren
LICENSE 52a602da39 Initial commit vor 11 Jahren
README.md cb69693b87 Update README.md vor 11 Jahren
cover.out c93a5bbd96 初始化 vor 11 Jahren
engine.go 7bd7481c0f 修改session.Find()API vor 11 Jahren
engineplus.go af6689079c 修改原session.Qeury()API vor 11 Jahren
error.go c93a5bbd96 初始化 vor 11 Jahren
goracle_driver.go c93a5bbd96 初始化 vor 11 Jahren
helpers.go 79c68794e6 修改原session.Qeury()API vor 11 Jahren
helpersplus.go 2484a741e1 修改原session.Qeury()API vor 11 Jahren
logger.go c93a5bbd96 初始化 vor 11 Jahren
lru_cacher.go c93a5bbd96 初始化 vor 11 Jahren
memroy_store.go c93a5bbd96 初始化 vor 11 Jahren
mssql_dialect.go c93a5bbd96 初始化 vor 11 Jahren
mymysql_driver.go c93a5bbd96 初始化 vor 11 Jahren
mysql_dialect.go c93a5bbd96 初始化 vor 11 Jahren
mysql_driver.go c93a5bbd96 初始化 vor 11 Jahren
oci8_driver.go c93a5bbd96 初始化 vor 11 Jahren
odbc_driver.go c93a5bbd96 初始化 vor 11 Jahren
oracle_dialect.go c93a5bbd96 初始化 vor 11 Jahren
pg_reserved.txt c93a5bbd96 初始化 vor 11 Jahren
postgres_dialect.go c93a5bbd96 初始化 vor 11 Jahren
pq_driver.go c93a5bbd96 初始化 vor 11 Jahren
processors.go c93a5bbd96 初始化 vor 11 Jahren
rows.go c93a5bbd96 初始化 vor 11 Jahren
session.go 7bd7481c0f 修改session.Find()API vor 11 Jahren
sessionplus.go 7bd7481c0f 修改session.Find()API vor 11 Jahren
sqlite3_dialect.go c93a5bbd96 初始化 vor 11 Jahren
sqlite3_driver.go c93a5bbd96 初始化 vor 11 Jahren
sqlmap.go f640c8c2a5 修改配置项名称 vor 11 Jahren
sqltemplate.go 24fce1fb25 增加SqlTemplateRootDir配置项 vor 11 Jahren
statement.go 79c68794e6 修改原session.Qeury()API vor 11 Jahren
syslogger.go c93a5bbd96 初始化 vor 11 Jahren
xorm.go 79c68794e6 修改原session.Qeury()API vor 11 Jahren
xormplus.go db2466f3a7 修改SqlMap和SqlTemplate初始化方式 vor 11 Jahren

README.md

xorm

###优化xorm的查询API,并提供类似ibatis的配置文件及动态SQL功能 测试用例测试结果

go get -u github.com/xormplus/xorm

var err error
db, err = xorm.NewPostgreSQL("postgres://postgres:root@localhost:5432/testdb?sslmode=disable")

if err != nil {
	t.Fatal(err)
}

err = db.InitSqlMap() //初始化SqlMap配置,可选功能
if err != nil {
	t.Fatal(err)
}
err = db.InitSqlTemplate() //初始化动态SQL模板配置,可选功能
if err != nil {
	t.Fatal(err)
}

####db.InitSqlMap()过程

  • err = db.InitSqlMap()读取程序所在目下的sql/xormcfg.ini配置文件(样例)中的SqlMapRootDir配置项
  • 遍历SqlMapRootDir所配置的目录及其子目录下的所有xml配置文件,配置文件样例
  • 解析xml配置文件

####db.InitSqlTemplate()过程

  • err = db.InitSqlTemplate()读取程序所在目下的sql/xormcfg.ini配置文件(样例)中的SqlTemplateRootDir配置项
  • 遍历SqlTemplateRootDir所配置的目录及其子目录下的所有stpl模板文件,模板文件样例
  • 解析stpl模板文件

###支持类似这样的链式读取数据操作

sql := "select id,title,createdatetime,content from article where id = ?"
rows, err := db.Sql(sql, 2).Query().Json() //返回查询结果的json字符串
rows, err := db.Sql("sql", 2).QueryWithDateFormat("20060102").Json() //返回查询结果的json字符串,并支持格式化日期
rows, err := db.Sql("sql", 2).QueryWithDateFormat("20060102").Xml() //返回查询结果的xml字符串,并支持格式化日期

id := db.Sql(sql, 2).Query().Result[0]["id"] //返回查询结果的第一条数据的id列的值
title := db.Sql(sql, 2).Query().Result[0]["title"]
createdatetime := db.Sql(sql, 2).Query().Result[0]["createdatetime"]
content := db.Sql(sql, 2).Query().Result[0]["content"]

articles := make([]Article, 0)
xml,err := db.Where("id=?", 6).Find(&articles).Xml() //返回查询结果的xml字符串
json,err := db.Where("id=?", 6).Find(&articles).Json() //返回查询结果的json字符串

sql := "select id,title,createdatetime,content from article where id = ?id and userid=?userid"
paramMap := map[string]interface{}{"id": 6, "userid": 1} //支持参数使用map存放
rows, err := db.Sql(sql, &paramMap).QueryByParamMap().XmlIndent("", "  ", "article")

###支持SqlMap配置,配置文件样例

<sqlMap>
	<sql id="selectAllArticle">
		select id,title,createdatetime,content 
		from article where id in (?1,?2)
	</sql>
	<sql id="selectStudentById1">
		select * from article where id=?id
	</sql>
</sqlMap>
paramMap := map[string]interface{}{"1": 2, "2": 5} //支持参数使用map存放
rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMap().Xml() //返回查询结果的xml字符串
rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMap().Json() //返回查询结果的json字符串
rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMapWithDateFormat("2006/01/02").XmlIndent("", "  ", "article") //返回查询结果格式化的xml字符串,并支持格式化日期

###提供动态SQL支持,使用pongo2模板引擎 例如配置文件名:select.example.stpl

配置样例内容如下:

select id,userid,title,createdatetime,content 
from article where  
{% if count>1%}
id=?id
{% else%}
userid=?userid
{% endif %}
paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMap().Json()
rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMapWithDateFormat("2006/01/02").Json()
rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMapWithDateFormat("2006/01/02").XmlIndent("", "  ", "article")