安装依赖
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
}
注意,这个是不同包下的文件
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("测试:你好")
}
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")
}