Appearance
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
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
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
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
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
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
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
2
3