• xorm -Alias,Asc,Desc方法实例


    • Alias(string)给Table设定一个别名

      package main
      
      import (
      	"fmt"
      	_ "github.com/go-sql-driver/mysql"
      	"github.com/go-xorm/xorm"
      	"log"
      	"time"
      )
      
      var engine *xorm.Engine
      
      type User struct {
      	Name string `xorm:"varchar(25) 'name'"`
      	Id   int    `xorm:"pk 'id' autoincr"`
      	CreatedAt time.Time `xorm:"created"`
      }
      
      
      func main() {
      	var err error
      	engine, err = xorm.NewEngine("mysql", "root:123456@/test")
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      	err = engine.CreateTables(User{})
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      //插入数据部分
      	u := make([]User,3)
      	u[0].Name="u0"
      	u[1].Name="u1"
      
      	_, err = engine.Insert(u)
      	if err!=nil {
      		log.Fatal(err)
      		return
      	}
      
      	uu :=new(User)
      
      	//查询结果为空
      	has,err := engine.Alias("alias") .Where("alias.name = ?","u").Get(uu)
      	if err!=nil{
      		log.Fatal(err)
      		return
      	}
      	fmt.Println("要查询的name是u的数据是否在数据库里:",has)
      	if has {
      		fmt.Println("uid:",uu.Id," uname:" ,uu.Name," utime:",uu.CreatedAt)
      	}
      
      	// 一个查询条件
      	has,err = engine.Alias("alias") .Where("alias.name = ?","u0").Get(uu)
      	if err!=nil{
      		log.Fatal(err)
      		return
      	}
      	fmt.Println("name是u0的数据是否在数据库里",has)
      	if has {
      		fmt.Println("    name是u0的数据在数据库里,而且他的uid:",uu.Id," uname:" ,uu.Name," utime:",uu.CreatedAt)
      	}
      
      	//and条件查询
      	has,err = engine.Alias("alias") .Where("alias.name = ?","u0").And("alias.id =?","1").Get(uu)
      	if err!=nil{
      		log.Fatal(err)
      		return
      	}
      	fmt.Println("name为u0,id为1的数据是否在数据库里",has)
      	if has {
      		fmt.Println("     name为u0,id为1的数据在数据库里,而且他的uid:",uu.Id," uname:" ,uu.Name," utime:",uu.CreatedAt)
      	}
      
      
      	//or条件查询
      	has,err = engine.Alias("alias") .Where("alias.name = ?","u0").Or("alias.name =?","u").Get(uu)
      	if err!=nil{
      		log.Fatal(err)
      		return
      	}
      	fmt.Println("name为u0或者为u的数据在数据库里",has)
      	if has {
      		fmt.Println("     name为u0或者为u的数据在数据库里,而且他的uid:",uu.Id," uname:" ,uu.Name," utime:",uu.CreatedAt)
      	}
      	/*
      	    输出:
      			要查询的name是u的数据是否在数据库里: false
      			name是u0的数据是否在数据库里 true
      				name是u0的数据在数据库里,而且他的uid: 6  uname: u0  utime: 2019-05-26 14:17:51 +0800 CST
      			name为u0,id为1的数据是否在数据库里 false
      			name为u0或者为u的数据在数据库里 true
      				 name为u0或者为u的数据在数据库里,而且他的uid: 6  uname: u0  utime: 2019-05-26 14:17:51 +0800 CST
      
      	*/
      
      }
      
    • Asc(…string)指定字段名正序排序/Desc(…string)指定字段名逆序排序

      package main
      
      import (
      	"fmt"
      	_ "github.com/go-sql-driver/mysql"
      	"github.com/go-xorm/xorm"
      	"log"
      	"time"
      )
      
      var engine *xorm.Engine
      
      type User struct {
      	Name      string    `xorm:"varchar(25) 'name'"`
      	Id        int       `xorm:"pk 'id' autoincr"`
      	CreatedAt time.Time `xorm:"created"`
      }
      
      func main() {
      	var err error
      	engine, err = xorm.NewEngine("mysql", "root:123456@/test")
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      	err = engine.CreateTables(User{})
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      /*	u := make([]User, 5)
      	u[0].Name = "abcd"
      	u[1].Name = "acbd"
      	u[2].Name = "dbac"
      	u[3].Name = "cbda"
      	u[4].Name = "bdca"
      
      	_, err = engine.Insert(u)
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      */
      	re := make([]User, 0)
      
      	fmt.Println("升序之前:")
      	err = engine.Find(&re)
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      	for i, r := range re {
      		fmt.Println("    index:", i, " rName:", r.Name)
      	}
      
      
      	re1 := make([]User, 0)
      	fmt.Println("====================升序之后:")
      	err = engine.Asc("name").Find(&re1)
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      	for i, r := range re1 {
      		fmt.Println("    index:", i, " rName:", r.Name)
      	}
      
      	fmt.Println("======================降序之后:")
      	re2 := make([]User, 0)
      	err = engine.Desc("name").Find(&re2)
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      	for i, r := range re2 {
      		fmt.Println("    index:", i, " rName:", r.Name)
      	}
      
      
      
      	fmt.Println("======================ORDERBY:")
      	re3 := make([]User, 0)
      	err = engine.OrderBy("name").Find(&re3)
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      	for i, r := range re3 {
      		fmt.Println("    index:", i, " rName:", r.Name)
      	}
      
      
      
      	fmt.Println("======================DESC:")
      	re4 := make([]User, 0)
      	err = engine.Desc("name").Find(&re4)
      	if err != nil {
      		log.Fatal(err)
      		return
      	}
      
      	for i, r := range re4 {
      		fmt.Println("    index:", i, " rName:", r.Name)
      	}
      }
      
      /*
      输出:
      升序之前:
      index: 0  rName: abcd
      index: 1  rName: acbd
      index: 2  rName: dbac
      index: 3  rName: cbda
      index: 4  rName: bdca
      ====================升序之后:
      index: 0  rName: abcd
      index: 1  rName: acbd
      index: 2  rName: bdca
      index: 3  rName: cbda
      index: 4  rName: dbac
      ======================降序之后:
      index: 0  rName: dbac
      index: 1  rName: cbda
      index: 2  rName: bdca
      index: 3  rName: acbd
      index: 4  rName: abcd
      ======================ORDERBY:
      index: 0  rName: abcd
      index: 1  rName: acbd
      index: 2  rName: bdca
      index: 3  rName: cbda
      index: 4  rName: dbac
      ======================DESC:
      index: 0  rName: dbac
      index: 1  rName: cbda
      index: 2  rName: bdca
      index: 3  rName: acbd
      index: 4  rName: abcd
      */
      
  • 相关阅读:
    C语言堆栈入门——堆和栈的区别(转)
    3--STM32 USB-三个HID-interface 复合(组合)设备的代码实现-基于固件库(原创)
    Spring 1 控制反转、依赖注入
    Java反射
    java多线程
    (六) 访问控制
    final关键字
    JSP(二):JSP九大内置对象、四个作用域对象
    JSP(一):JSP概要
    Servlet(九):web.xml文件和server.xml文件
  • 原文地址:https://www.cnblogs.com/jiangxiangxiang/p/10932692.html
Copyright © 2020-2023  润新知