1. 安装模块
代码语言:javascript复制npm i egg-mysql --save
2. 配置模块
代码语言:javascript复制// config/plugin.js
'use strict';
exports.ejs = {
enable: true,
package: 'egg-view-ejs',
};
// 配置模块
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
3. 配置MySQL数据库的连接
代码语言:javascript复制// app/controller/config.default.js
'use strict';
module.exports = appInfo => {
const config = exports = {};
config.keys = appInfo.name '_1534304805936_5738';
config.middleware = [];
exports.view = {
mapping: {
'.html': 'ejs',
},
};
// 配置MySQL数据库的连接
exports.mysql = {
// database configuration
client: {
// host
host: 'localhost',
// port
port: '3306',
// username
user: 'root',
// password
password: '123456',
// database
database: 'test'
},
// load into app, default is open
app: true,
// load into agent, default is close
agent: false,
};
return config;
};
4. 操作数据库
代码语言:javascript复制// app/controller/user.js
'use strict';
const Controller = require('egg').Controller;
class UserController extends Controller {
async index() {
// 1.查询一条数据,不管条件是什么,只能查一条
let getResult = await this.app.mysql.get(
'user', { "id": 3 }
);
// 2.查询多条数据
let selectResult = await this.app.mysql.select(
'user', { limit: 10, orders: [['id', 'desc']] }
);
// 3.通过SQL语句查询数据
let queryResult= await this.app.mysql.query(
'select * from user'
);
// 4.通过SQL语句查询数据,查询条件为用户ID
let user_id=3;
let queryResultById= await this.app.mysql.query(
'select * from user where id=?',[user_id]
);
// 5.增加数据
let insertResult = await this.app.mysql.insert(
'user', { username: 'admin', 'password': '123456' }
);
// 6.根据主键修改数据
let userInfo = {
id: 24,
username: '二麻子'
};
let updateResultById = await this.app.mysql.update('user', userInfo);
// 7.执行SQL语句来修改数据,条件为密码等于666666
let updateResultBySQL= await this.app.mysql.query(
'update user set username=? where password=?',['李四','666666']
);
// 8. 按指定的用户ID删除数据
let deleteResult = await this.app.mysql.delete(
'user', {id: '25'}
);
this.ctx.body = '操作成功';
}
}
module.exports = UserController;
5. 事务操作
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。如果有一个失败执行回滚操作,如果成功执行提交操作,将数据真正的增加到数据库里面。
在MongoDB的新版本里面也支持事务,使用事务必须创建MongoDB副本集,即主从数据库。
代码语言:javascript复制// app/controller/user.js
'use strict';
const Controller = require('egg').Controller;
class UserController extends Controller {
async index() {
// 引入事件对象
const conn = await this.app.mysql.beginTransaction();
try {
// 增加数据操作
await conn.insert(
'user', { username: '张三', 'password': '123456' }
);
// 修改数据操作
await conn.query(
'update user set username=? where id=?', ['李四', '2']
);
await conn.commit();
this.ctx.body = '操作成功';
} catch (err) {
await conn.rollback();
throw err;
};
}
}
module.exports = UserController;