iris(golang)连接mysql数据库

连接mysql数据库

安装依赖

go get github.com/go-sql-driver/mysql
func LinkMySQL(){
	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout")
	//设置数据库最大连接数
	DB.SetConnMaxLifetime(100)
	//设置上数据库最大闲置连接数
	DB.SetMaxIdleConns(10)
	//验证连接
	if err := DB.Ping(); err != nil {
		fmt.Println("open database fail")
		return
	}
	fmt.Println("connnect success")
}

查询表文件(多个文件)

create database webgo_accout;

use webgo_accout;

create table users(`uid` bigint not null AUTO_INCREMENT primary key,
`accout` varchar(255) not null,
`password` varchar(255) not null,
`username` varchar(255) not null default '用户名1'
);

insert into users(`accout`,`password`,`username`) values ('admin','admin','admin');

#测试是否是数组显示添加的数据,可以不写
insert into users(`accout`,`password`,`username`) values ('test','test','test');
//定义结构体
type User struct{
	Uid int `json:"uid"`
	Accout string `json:"accout"`
	PassWord string `json:"password"`
	UserName string `json:"username"`
}
//查询方法
func MySQLFindAll() []User{
	var user User //结构体数据
	users := []User{} //结构体数组
	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout") //mysql数据库连接
	rows,err := DB.Query("select * from users") //sql查询语句
	if err != nil {
		fmt.Println("select error",err)
	}
	for rows.Next() {
		//添加数据
		rows.Scan(&user.Uid,&user.Accout,&user.PassWord,&user.UserName)
		//查看数据是否添加
		fmt.Printf("uid:%d\n",user.Uid)
		fmt.Printf("accout:%s\n",user.Accout)
		users = append(users,user) //添加数据,结构: 结构体数组1 = append(结构体数组1,数据)
	}
	defer rows.Close()
	return users
}

iris与数据库进行连接显示

注意,这个是不同包下的文件

  • 连接数据库部分
  • 需要go mod init link添加go.mod
  • go get github.com/go-sql-driver/mysql也是在此文件夹下添加,会生成go.sum
package link

import (
	"fmt"
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
)

func LinkMySQL(){
	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout")
	//设置数据库最大连接数
	DB.SetConnMaxLifetime(100)
	//设置上数据库最大闲置连接数
	DB.SetMaxIdleConns(10)
	//验证连接
	if err := DB.Ping(); err != nil {
		fmt.Println("open database fail")
		return
	}
	fmt.Println("connnect success")
}

type User struct{
	Uid int `json:"uid"`
	Accout string `json:"accout"`
	PassWord string `json:"password"`
	UserName string `json:"username"`
}
func MySQLFindAll() []User{
	var user User
	users := []User{}
	DB,_ := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/webgo_accout")
	rows,err := DB.Query("select * from users")
	if err != nil {
		fmt.Println("select error",err)
	}
	for rows.Next() {
		rows.Scan(&user.Uid,&user.Accout,&user.PassWord,&user.UserName)
		fmt.Printf("uid:%d\n",user.Uid)
		fmt.Printf("accout:%s\n",user.Accout)
		users = append(users,user)
	}
	defer rows.Close()
	return users
}

func LinkMongo(){
	fmt.Print("测试:你好")
}


  • iris部分

main主包下的go.mod

module accout

go 1.21.0

require (
	//...(go get xxx 自行添加的)
)

require (
	com.chentianyu.learn/link v1.0.0
)

replace (
	com.chentianyu.learn/link => ./link
)
package main

import (
	"github.com/kataras/iris/v12"
	"com.chentianyu.learn/link"
)

func linkMy(){
	link.LinkMySQL()
}

func main() {
	app := iris.New()
	linkMy() //连接数据库
	
	//查询数据库中的数据api(测试,正式要换成Post)  http://localhost:8089/mysql_find
	app.Get("/mysql_find",func(ctx iris.Context){
		user1 := link.MySQLFindAll()
		ctx.JSON(user1)
	})
	//首页,根目录: http://localhost:8089/
	app.Get("/",func(ctx iris.Context){
		ctx.Text("welcome this is accout api")
	})
	
	
	//设置端口
	app.Listen(":8089")
}



你可能感兴趣的:(golang,数据库,golang,mysql)