暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Go语言操作MySQL的DAO-i

红牛编程 2018-12-07
1207

接下来我们封装一个操作MySQL的DAO。是一个持续的过程。今天是第一部分。 不知道一共几个部分,大概需要几天吧! 这个可以是在项目中直接用的呢。


操作MySQL的DAO1 概述2 基本结构3 构造方法初始化DSN初始化属性执行非查询类SQL执行查询类SQL插入单行插入多行更新删除查询多行查询一行查询单个值查询单列统计查询原生字符串

操作MySQL的DAO

1 概述

DAO,Data Access Object,数据操作对象,在项目中,定位是用于操作数据库的工具。通常是将常用的数据操作封装,在业务逻辑中,快速实现数据库的操作。

Go的该DAO,可以在GitHub上,访问,并在项目中直接使用。

下面介绍封装过程,希望可以和大家一起完成。

2 基本结构

使用一个结构体 DAO 来实现,具体代码如下:

// DAO 结构体(类)
type DAO struct {
  // 连接对象
  dsn string

  // 操作数据库的抽象层对象
  db *sql.DB

  // SQL的子句
  // 字段列表子句
  field string
  // from 子句
  from string
  // form 别名子句
  as   string
  // join 子句
  joinType    []string
  joinTable   []string
  joinTableAs []string
  joinOn      []string
  // where子句独立存储
  whereCond string
  whereArgs []interface{}
  // groupBy
  groupBy string
  // having
  havingCond string
  havingArgs []interface{}
  // order
  orderBy string
  // limit子句
  limit  string
  offset string
}

基本思路就是,在构造时通过数据库服务器参数拼凑得到DSN,并打开数据连接池。底层使用 sql.DB
抽象层完成数据库操作。在执行SQL时,通过不同的子句方法设置不同部分的子句,最终执行时,拼凑到一起执行,完成CRUD。

3 构造方法

构造方法用来得到 DAO 对象的引用在业务逻辑代码中调用。具体代码如下:

func New(config map[string]string) (*DAO, error) {
  // 拼凑 DSN
  DSN, err := initDSN(config)
  if nil != err {
    return nil, err
  }

  // 打开连接池
  db, err := sql.Open("mysql", DSN)
  if err != nil {
    return nil, err
  }

  // 实例化DAO对象
  dao := &DAO{
    dsn: DSN,
    db:  db,
  }

  // 初始化 属性
  dao.Reset()

  // 返回 DAO 对象
  return dao, nil
}

构造方法,先通过配置参数(服务器信息)得到DSN,再打开数据库连接池,然后实例化DAO对象,再然后将属性初始化,最后返回该对象。

该方法的目的,就是得到DAO对象的引用!

接下来我们看如何初始化DSN和属性的。

初始化DSN

初始化属性

执行非查询类SQL

执行查询类SQL

插入单行

插入多行

更新

删除

查询多行

查询一行

查询单个值

查询单列

统计查询

原生字符串



文章转载自红牛编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论