Aucune description

xormplus 25243cb404 . il y a 10 ans
docs 25243cb404 . il y a 10 ans
test 951e22a4ef bug fix il y a 10 ans
.gitignore 52a602da39 Initial commit il y a 10 ans
LICENSE 52a602da39 Initial commit il y a 10 ans
README.md 7bebf8f63d Update README.md il y a 10 ans
cover.out c93a5bbd96 初始化 il y a 10 ans
engine.go 7bd7481c0f 修改session.Find()API il y a 10 ans
engineplus.go af6689079c 修改原session.Qeury()API il y a 10 ans
error.go c93a5bbd96 初始化 il y a 10 ans
goracle_driver.go c93a5bbd96 初始化 il y a 10 ans
helpers.go 951e22a4ef bug fix il y a 10 ans
helpersplus.go 2484a741e1 修改原session.Qeury()API il y a 10 ans
logger.go c93a5bbd96 初始化 il y a 10 ans
lru_cacher.go c93a5bbd96 初始化 il y a 10 ans
memroy_store.go c93a5bbd96 初始化 il y a 10 ans
mssql_dialect.go c93a5bbd96 初始化 il y a 10 ans
mymysql_driver.go c93a5bbd96 初始化 il y a 10 ans
mysql_dialect.go c93a5bbd96 初始化 il y a 10 ans
mysql_driver.go c93a5bbd96 初始化 il y a 10 ans
oci8_driver.go c93a5bbd96 初始化 il y a 10 ans
odbc_driver.go c93a5bbd96 初始化 il y a 10 ans
oracle_dialect.go c93a5bbd96 初始化 il y a 10 ans
pg_reserved.txt c93a5bbd96 初始化 il y a 10 ans
postgres_dialect.go c93a5bbd96 初始化 il y a 10 ans
pq_driver.go c93a5bbd96 初始化 il y a 10 ans
processors.go c93a5bbd96 初始化 il y a 10 ans
rows.go c93a5bbd96 初始化 il y a 10 ans
session.go e117fb424b 增加Top方法,之前在Statement中提供了此方法,但Session中未提供 il y a 10 ans
sessionplus.go 7bd7481c0f 修改session.Find()API il y a 10 ans
sqlite3_dialect.go c93a5bbd96 初始化 il y a 10 ans
sqlite3_driver.go c93a5bbd96 初始化 il y a 10 ans
sqlmap.go f640c8c2a5 修改配置项名称 il y a 10 ans
sqltemplate.go 24fce1fb25 增加SqlTemplateRootDir配置项 il y a 10 ans
statement.go 79c68794e6 修改原session.Qeury()API il y a 10 ans
syslogger.go c93a5bbd96 初始化 il y a 10 ans
xorm.go 79c68794e6 修改原session.Qeury()API il y a 10 ans
xormplus.go db2466f3a7 修改SqlMap和SqlTemplate初始化方式 il y a 10 ans

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")

###讨论 请加入QQ群:280360085 进行讨论。API设计相关建议可联系本人QQ:50892683