简便的golang orm
来源:互联网 发布:ubuntu命令行输入中文 编辑:程序博客网 时间:2024/05/16 05:15
一个新颖简便的golang orm . 容易比较容易上手。
from: http://studygolang.com/articles/2148
About
一个数据库ORM.
How to use?
Insert
go get github.com/ablegao/orm
例子
//引用模块import "github.com/ablegao/orm"//mysql 驱动import _ "github.com/go-sql-driver/mysql"//建立连接 // 参数分别为 名称 , 驱动, 连接字符串// 注:必须包含一个default 连接, 作为默认连接。orm.NewDatabase("default" , "mysql" , "user:passwd@ip/database?charset=utf8")//建立一个数据模型。 type UserInfo struct { orm.Object Id int64 `field:"id" auto:"true" index:"pk"` Name string `field:"username"` Passwd string `field:"password"`}//数据库表名称func(self *UserInfo) GetTableName()string{ return "database.user_info"}//查询一个用户名为 "test1"的账户 user:=new(UserInfo)err:=user.Objects(user).Filter("Name","test1").One()fmt.Println(user.Id , user.Passwd , user.Name)//Update user.Name="test2"user.Objects(user).Save()// or user.Objects(user).Filter("Id" , 1).Change("Name" , "test2").Save()//查询id小于10的所有数据users , err:=user.Objects(user).Filter("Id__lt",10).All()if err == nil { for _,userinfo:= range users{ u:=userinfo.(*UserInfo) fmt.Println(u.Id , u.Passwd , u.Name) }}//Create user:=new(UserInfo)user.Name ="test1"user.Passwd ="123456"id , err:=user.Objects(user).Save()//deleteuser.Objects(user).Delete()// User other Database connect orm.NewDatabase("other" , "mysql" , "user:passwd@ip/database?charset=utf8")user.Objects(user).Db("other").Filter(x ,x).Delete()// or user.Objects(user).Filter().Db("other").XXX()
Filter or FilterOr
.Filter(fieldname , val )
Filter 作为orm 的主要作用是过滤查询条件, 最终将会转换为sql 语句中的where 条件语句。 可以填写多次, 多次数据为and 关系
FilterOr 作为Orm 的主要过滤查询条件, 最终将妆化为sql 语句的where 条件语句 , 可以填写多次, 多次数据以 or 连接
user.Objects(user).Filter(“Name” , “test1”).FilterOr(“Name” , “test2”).All()
//select id,username,passwd from database.user_info where username='test1' or username='test2'
关于Filter字段的魔法参数
目前支持:
__exact 精确等于 like 'aaa' __iexact 精确等于 忽略大小写 ilike 'aaa' __contains 包含 like '%aaa%' __icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。__gt 大于__gte 大于等于__ne 不等于__lt 小于__lte 小于等于__startswith 以...开头__istartswith 以...开头 忽略大小写__endswith 以...结尾__iendswith 以...结尾,忽略大小写
尚未支持:
__in 存在于一个list范围内__range 在...范围内__year 日期字段的年份__month 日期字段的月份__day 日期字段的日__isnull=True/False
Change
修改数据, 执行时,相当于 sql 语句中的set
传入一个结构字段 和值
.Change(“Field” , 1)
update from xxx set field=1
可以添加魔法参数:
.Change(“Field__add” ,1 )
update from xxx set field=field+1
add 累加 field=field+1
sub 累减 field=field-1
mult 累乘 field=field*1
div 累计出发 field=field/1
阅读全文
0 0
- 简便的golang orm
- GOLANG BEEGO ORM
- 高效快捷简便易用的基于JSP的开源框架 MVC+ORM框架- YangMVC
- GOLANG WEB框架 ORM笔记
- 子网掩码的简便算法
- 子网掩码的简便算法
- 子网掩码的简便算法
- word简便的使用方法
- VARIANT的简便介绍
- ViewHolder的简便写法
- ViewHolder的简便写法
- selector的简便写法
- Golang的...
- 更加简便的使用VSS
- 包含LIB的简便方法
- 树操作的简便过程
- Trend卸载的简便方法.
- ZeroMemory引出的简便用法
- 第八节:在定时中断函数里执行独立按键的扫描程序。
- apache 启动后访问网页提示You don't have permission to access / on this server.
- 关于The server does not support version 3.0 of the J2EE Web module specification.问题的解决方案
- Java并发编程:深入剖析ThreadLocal
- 判断一颗二叉树是否为平衡二叉树
- 简便的golang orm
- Linux 常用基本命令 cal date
- Is Derek lying?
- pip install django失败时的解决办法
- 3417
- 中国安防行业发展趋势四大看点
- Integer与int的区别
- android中的AIDL
- iOS多线程之GCD简单解析