当前位置: 首页 > wzjs >正文

怎么做刷qq业务网站嘉兴seo

怎么做刷qq业务网站,嘉兴seo,个人网站备案要钱吗,郴州网站seo优化目录 01 01-gorm介绍 02 02-MySQL操作回顾 03 03-gorm创建表 04 04-MySQL的init函数说明 05 05-gorm框架提供的MySQL连接池 06 06-gorm插入数据 07 07-gorm查询数据 08 08-gorm更新数据 09 09-gorm软删除-创建表 10 10-gorm软删除-实现 11 10-MySQL的8小时时区问题 …

目录

01 01-gorm介绍

02 02-MySQL操作回顾

03 03-gorm创建表

04 04-MySQL的init函数说明

05 05-gorm框架提供的MySQL连接池

06 06-gorm插入数据

07 07-gorm查询数据

08 08-gorm更新数据

09 09-gorm软删除-创建表

10 10-gorm软删除-实现

11 10-MySQL的8小时时区问题

12 12-gorm实现创建表指定属性

13 13-初始化MySQL连接池-创建项目用表


01 gorm介绍

02 MySQL操作回顾

# ORM 框架

## ORM 框架介绍

- ORM:Object  Relational   Mapping  —— 对象关系映射。

![1582249051388](课本笔记-06.assets/1582249051388.png)

- 作用:
    - 通过操作结构体对象,来达到操作数据库表的目的。
    - 通过结构体对象,来生成数据库表。
- 优点:
    - SQL有可能 比较复杂。(Oracle --- 子查询 -- 嵌套)ORM 操作数据库,不需要使用 SQL
    - 不同开发者,书写的 SQL 语句执行效率不同。

- go语言支持的 ORM:
    - gORM:http://gorm.book.jasperxu.com/
    - xORM:

03 gorm创建表

# gorm 连接数据库、建表

- grom 操作的都是表、表数据。—— 不能操作数据库!使用SQL配合完成。

    ```sql
    create database 库名 charset=utf8;
    ```

    

## 回顾MySQL

1. 确认mysql服务,启动:` ps xua | grep mysql`
2. 连接MySQL数据库: mysql -uroot -p123456
3. 查看数据库:show databases;
4. 删除数据库:drop database t1;    t1 代表库名。
5. 选择数据库、查看表:use 数据库名;     show tables;
6. 创建数据库: create database test charset=utf8;

04 MySQL的init函数说明

## gORM 操作 MySQL 数据库

### 创建表

1. 连接数据库

    ```go
    import (
        "github.com/jinzhu/gorm"
        _ "github.com/go-sql-driver/mysql"   //"_" 代码不直接使用包, 底层链接要使用!
        "fmt"
    )
    // mysql: 数据库的驱动名
    // 链接数据库 --格式: 用户名:密码@协议(IP:port)/数据库名?xxx&yyy&
    conn, err := gorm.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test")
    if err != nil {
        fmt.Println("gorm.Open err:",err)
        return
    }
    defer conn.Close()

05 gorm框架提供的MySQL连接池

. 创建数据库表。 ——不能使用gorm创建数据库。  提前使用 SQL语句,创建好想要的数据库。

    AutoMigrate()  创建表。默认创建的表 为 复数类型。—— 自动添加 “s” 

    在创建之前, 添加 `    conn.SingularTable(true)` 可以创建非复数表名的表。

    ```go
    // 不要复数表名
    conn.SingularTable(true)
    
    // 借助 gorm 创建数据库表.
    fmt.Println(conn.AutoMigrate(new(Student)).Error)

06 gorm插入数据

3. 查看

    ```shell
    mysql> desc student;
    +-------+--------------+------+-----+---------+----------------+
    | Field | Type         | Null | Key | Default | Extra          |
    +-------+--------------+------+-----+---------+----------------+
    | id    | int(11)      | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(255) | YES  |     | NULL    |                |
    | age   | int(11)      | YES  |     | NULL    |                |
    +-------+--------------+------+-----+---------+----------------+
    
    ```

07 gorm查询数据

### MySQL 包的 init 方法

1.  `_ "github.com/go-sql-driver/mysql"` 导入包时, “_” ,表示,驱使go系统,在main() 函数被调用之前,自动调用 init() 函数。
2. go语言中有两个特殊函数:  —— 首字母小写,包外可见 。
    1. main()   —— 项目的入口函数 
    2. init() —— 当导包,但没有在程序中使用。 在main() 调用之前,自动被调用。
        - 查看:光标置于 MySQL包的 “mysql” 上。 使用 Ctrl-鼠标左键。 看到源码。 在 driver.go 底部包含 init() 函数的 定义。
        - init() 作用:实现注册 MySQL 驱动。

3. 测试:

    test2/ 中

    ```go
    --- 创建 test2/ 目录, 在内部添加 init()
    
    package test2
    
    import "fmt"
    // 首字母小写函数, 包作用域, 不能跨包使用!
    func init()  {
        fmt.Println("测试 init 函数 ....")
    }
    ```

    test/ 中

    ```go
    import (
        "github.com/jinzhu/gorm"
        _ "bj38web/web/test2"   //"_" 代码不直接使用包, 底层链接要使用!
        "fmt"
    )
    func main()  {
        fmt.Println("----this is main ---")
    }
    输出:    测试 init 函数 ....
    再输出:----this is main ---
    ```

08 gorm更新数据

运行结果: init 函数 会先于 main() 函数被调用!!!

### gorm的连接池

1.  ```go
    -- 默认, grom框架创建好的MySQL数据库连接 conn ,就是一个连接池的句柄。
    conn, err := gorm.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test")
    
    ```

2. 初始化全局变量, 接收句柄

    ```go
    // 创建全局连接池句柄
    var GlobalConn *gorm.DB
    
    GlobalConn = conn
    ```

09 gorm软删除-创建表

. 修改连接池初始属性

    ```go
    // 初始数
    GlobalConn.DB().SetMaxIdleConns(10)
    // 最大数
    GlobalConn.DB().SetMaxOpenConns(100)
    ```

4. 使用连接池句柄

    ```go
    --- 对比redis连接池:不需要使用 Get() 方法,取一条连接。
    // 不要复数表名
    GlobalConn.SingularTable(true)
    
    // 借助 gorm 创建数据库表.
    fmt.Println(GlobalConn.AutoMigrate(new(Student)).Error)
    ```

10 gorm软删除-实现

# gorm 操作数据库数据

## gorm 插入数据

```go
// insert into student(name, age) values('zhangsan', 100)

func InsertData()  {
    // 先创建数据 --- 创建对象
    var stu Student
    stu.Name = "zhangsan"
    stu.Age = 100

    // 插入(创建)数据
    fmt.Println(GlobalConn.Create(&stu).Error)
}
```

11 MySQL的8小时时区问题

使用注意事项:

- 插入数据时,使用的 create() 函数,传参时,必须传入 &对象。 如果遗漏 “&” 会报错:

![1582255572530](课本笔记-06.assets/1582255572530.png)

- 要保证 ,在插入数据库时,`GlobalConn.SingularTable(true)` 生效。代表不使用 复数表名。

12 gorm实现创建表指定属性

## gorm 查询数据

### 简单查询方法:

 1. First(&suer):

     - 获取 user 表中的第一条数据

        ```go
        func SearchData()  {
            var stu Student
            GlobalConn.First(&stu)
            fmt.Println(stu)
        }
        ```

    - 相当于SQL:` SELECT * FROM student ORDER BY id LIMIT 1;`

    - 只查询 name、age 不查询其他值:

        ```go
        GlobalConn.Select("name, age").First(&stu)
        ```

13 初始化MySQL连接池-创建项目用表

2. Last(&user)

     - 获取 user 表中的最后一条数据
     - 相当于SQL:` SELECT * FROM users ORDER BY id DESC LIMIT 1`

 3. Find(&user)

     - 获取 user 表中的所有数据。

        ```go
        var stu []Student        // 改为切片
        GlobalConn.Select("name, age").Find(&stu)   // Find() 查询多条
        ```

    - 相当于SQL:`select name, age from student;`

http://www.dtcms.com/wzjs/191643.html

相关文章:

  • wordpress 分类 配图佛山网站设计实力乐云seo
  • 天津装修公司做网站今日头条新闻
  • 博客网站推广网络推广计划方案
  • 如何发布自己做的网站百度sem优化师
  • 重庆招投标交易信息网seo是什么意思蜘蛛屯
  • 佛山网站建设与设计公司关键词一般是指什么
  • 昆山市建设局网站黑帽seo优化
  • 怎么做动态网站页面广州网站快速优化排名
  • wordpress进入有点卡石家庄关键词优化报价
  • 文化旅游做的好的网站百度推广登录入口官网
  • 网站开发技术可行性seo优化资源
  • 仿制网站建设电脑培训学校学费多少
  • wordpress 虚拟主广州 关于进一步优化
  • 做淘宝素材网站哪个好用网页怎么优化
  • 看房网朝阳区seo搜索引擎优化介绍
  • 网站开发怎么自学网站内容seo
  • wordpress不能发邮件成都网站排名 生客seo
  • 做网站切图是什么意思搜索软件使用排名
  • 做vi的图有网站吗人民日报今日新闻
  • 兰州网站建设加王道下拉如何优化企业网站
  • 网站正在建设中的代码aso推广方案
  • 网站建设是永久使用吗免费网上申请注册
  • 做暧暧视频网站日本网站排名软件利搜
  • 网站设计论文前言怎么写seo网站制作优化
  • 王业美重庆seo顾问服务
  • 谷歌seo招聘搜索引擎关键词优化
  • 无锡市新吴区建设环保局网站关键词排名的排名优化
  • 淘宝网站设计分析广东东莞疫情最新消息今天又封了
  • 容桂品牌网站建设优惠单个药品营销策划方案
  • 建网站空间都有什么平台安卓嗅探app视频真实地址