Egg 中结合Egg-mysql操作MySQL

1. 安装模块

npm i egg-mysql --save

2. 配置模块

// config/plugin.js
'use strict';

exports.ejs = {
    enable: true,
    package: 'egg-view-ejs',
};

// 配置模块
exports.mysql = {
    enable: true,
    package: 'egg-mysql',
};

3. 配置MySQL数据库的连接

// 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. 操作数据库

// 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副本集,即主从数据库。

// 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;

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aiguangyuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值