xorm学习笔记2:在golang中使用xorm
package main
import (
"fmt"
"strconv"
)
const prompt = ` 请输入数据选择相应功能:
0. 批量创建测试账户
1. 手动创建账户
2. 显示账号信息
3. 存款
4. 取钱
5. 转账
6. 根据id排行显示账户
7. 根据存款排行显示账户
8. 删除账户
9. 删除id大于?的账户
10. 查询银行账户总个数
11. 查询相同金额的账户个数
12. 迭代打印
99. 退出
`
func main() {
fmt.Println("欢迎来到银行!")
Exit:
for {
fmt.Print(prompt)
var num int
fmt.Scanf("%d\n", &num)
switch num {
case 0:
fmt.Printf("请输入要创建的【账户个数】")
var initCount int
fmt.Scanf("%d\n", &initCount)
for i := 0; i < initCount; i++ {
if err := newAccount("testName"+strconv.Itoa(i), float64(i*10)); err != nil {
fmt.Print(err)
} else {
fmt.Printf("创建测试账户成功,i=%d\n", i)
}
}
case 1:
fmt.Println("请输入【账号】和【钱】")
var name string
var balance float64
fmt.Scanf("%s %f\n", &name, &balance)
if err := newAccount(name, balance); err != nil {
fmt.Println("创建账号错误,err=", err)
}
case 2:
fmt.Println("请输入账号【id】,查看账号信息!")
var id int64
fmt.Scanf("%d\n", &id)
if a, err := getAccount(id); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%#v\n", a)
}
case 3:
fmt.Println("请输入【账号id】及【存款金额】")
var id int64
var deposit float64
fmt.Scanf("%d %f\n", &id, &deposit)
if a, err := makeDeposit(id, deposit); err == nil {
fmt.Printf("存款成功!你的账户信息:%#v\n", a)
} else {
fmt.Print(err)
}
case 4:
fmt.Println("请输入【账号id】及【取款金额】!")
var id int64
var withDraw float64
fmt.Scanf("%d %f\n", &id, &withDraw)
if a, err := makeWithDraw(id, withDraw); err == nil {
fmt.Printf("取款成功!你的账户信息:%#v\n", a)
} else {
fmt.Print(err)
}
case 5:
fmt.Println("请分别输入【转账账户id】、【转账对象id】及【金额】")
var id int64
var targetId int64
var count float64
fmt.Scanf("%d %d %f\n", &id, &targetId, &count)
if err := makeTrans(id, targetId, count); err == nil {
fmt.Printf("转账成功!")
} else {
fmt.Println(err)
}
case 6:
as, err := getAccountAscId()
if err != nil {
fmt.Println(err)
} else {
for i, a := range as {
fmt.Printf("%d: %#v\n", i, a)
}
}
case 7:
as, err := getAccountsByBalance()
if err != nil {
fmt.Println(err)
} else {
for i, a := range as {
fmt.Printf("%d: %#v\n", i, a)
}
}
case 8:
fmt.Println("请输入要删除的【账户id】")
var id int64
fmt.Scanf("%d\n", &id)
if err := deleteAccountById(id); err == nil {
fmt.Println("删除账户成功!")
} else {
fmt.Print(err)
}
case 9:
fmt.Printf("请输入开始删除的【账户id】")
var id int64
fmt.Scanf("%d\n", &id)
if err := deleteAccountByIdGreaterThen(id); err == nil {
fmt.Println("删除成功")
} else {
fmt.Print(err)
}
case 10:
if count, err := getAccountCount(); err == nil {
fmt.Printf("当前银行总账户数:%d\n", count)
} else {
fmt.Print(err)
}
case 11:
fmt.Println("请输入所要查看的【金额数】")
var banlance float64
fmt.Scanf("%f\n", &banlance)
if count, err := getSameBalanceAccountCount(banlance); err == nil {
fmt.Printf("当前银行中金额为%f的总账户数:%d\n", banlance, count)
} else {
fmt.Print(err)
}
case 12:
fmt.Printf("迭代打印开始-------\n")
x.Iterate(new(Account), func(idx int, bean interface{}) error {
fmt.Printf("%d:%#v\n", idx, bean.(*Account))
return nil
})
case 99:
fmt.Println("bye!")
break Exit
default:
}
}
}