Skip to content
On this page

mysql 数据库

框架提供了 egg-mysql 插件来访问 MySQL 数据库。这个插件既可以访问普通的 MySQL 数据库,也可以访问基于 MySQL 协议的在线数据库服务。

5.1 安装与配置

安装对应的插件 egg-mysql :

javascript
npm i --save egg-mysql
1

开启插件:

javascript
// config/plugin.js
exports.mysql = {
  enable: true,
  package: "egg-mysql",
};
1
2
3
4
5

在  config/config.${env}.js  配置各个环境的数据库连接信息。

5.1.1 单数据源

如果我们的应用只需要访问一个 MySQL 数据库实例,可以如下配置:
使用方式:

javascript
// config/config.${env}.js
exports.mysql = {
  // 单数据库信息配置
  client: {
    // host
    host: "mysql.com",
    // 端口号
    port: "3306",
    // 用户名
    user: "test_user",
    // 密码
    password: "test_password",
    // 数据库名
    database: "test",
  },
  // 是否加载到 app 上,默认开启
  app: true,
  // 是否加载到 agent 上,默认关闭
  agent: false,
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
javascript
await app.mysql.query(sql, values); // 单实例可以直接通过 app.mysql 访问
1

5.1.2 多数据源

如果我们的应用需要访问多个 MySQL 数据源,可以按照如下配置:

javascript
exports.mysql = {
  clients: {
    // clientId, 获取client实例,需要通过 app.mysql.get('clientId') 获取
    db1: {
      // host
      host: "mysql.com",
      // 端口号
      port: "3306",
      // 用户名
      user: "test_user",
      // 密码
      password: "test_password",
      // 数据库名
      database: "test",
    },
    db2: {
      // host
      host: "mysql2.com",
      // 端口号
      port: "3307",
      // 用户名
      user: "test_user",
      // 密码
      password: "test_password",
      // 数据库名
      database: "test",
    },
    // ...
  },
  // 所有数据库配置的默认值
  default: {},
  // 是否加载到 app 上,默认开启
  app: true,
  // 是否加载到 agent 上,默认关闭
  agent: false,
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

5.2 封装增删改查

5.2.1、插入,向 users 表内插入一条数据

javascript
const result = await this.app.mysql.insert("users", {
  name: "wjw",
  age: 18,
});
// 判断:result.affectedRows === 1
1
2
3
4
5

5.2.2、查询,查询 users 表 name=Jack 的数据

javascript
const result = await this.app.mysql.select("users", {
  columns: ["id", "name"], //查询字段,全部查询则不写,相当于查询*
  where: {
    name: "wjw",
  }, //查询条件
  orders: [
    ["id", "desc"], //降序desc,升序asc
  ],
  limit: 10, //查询条数
  offset: 0, //数据偏移量(分页查询使用)
});
//判断:result.length > 0
1
2
3
4
5
6
7
8
9
10
11
12

5.2.3、修改,修改 users 表 id=1 的数据 age 为 20

javascript
const result = await this.app.mysql.update(
  "users",
  {
    age: 20, //需要修改的数据
  },
  {
    where: {
      id: 1,
    }, //修改查询条件
  }
);
//判断:result.affectedRows === 1
1
2
3
4
5
6
7
8
9
10
11
12

5.2.4、删除,删除 users 表 name=wjw 的数据

javascript
const result = await this.app.mysql.delete("users", {
  name: "wjw",
});
1
2
3
沪ICP备20006251号-1