• midwayjs 使用egg-mysql


    一、配置

    1. 安装egg-mysql

      npm install egg-mysql -S
      
      
    2. src/config/plugin.ts添加配置代码如下

      export default {
        ……
        mysql: {
          enable: true,
          package: 'egg-mysql',
        }
        ……
      } as EggPlugin;
      
      
    3. src/config/config.default.ts添加配置代码如下

      import { EggAppConfig, EggAppInfo, PowerPartial } from 'midway';
      export type DefaultConfig = PowerPartial<EggAppConfig>
      
      export default (appInfo: EggAppInfo) => {
        const config = <DefaultConfig> {};
        ……
        config.mysql = {
          // database configuration
          client: {
            // host
            host: '127.0.0.1',
            // port
            port: '3306',
            // username
            user: 'root',
            // password
            password: '123456',
            // database
            database: 'yoye',
          },
          //load into app,default is open //加载到应用程序,默认为打开
          app:true,
          //load into agent,default is close //加载到代理中,默认值为“关闭”
          agent:false,
        }
        
      ……
        return config;
      };
      
      

    二、创建测试数据

    在这里我们的mysql里是存在名为yoye的数据库,并且通过sql语句新建了test表,且存在一个name字段,新建数据库并初始化测试表SQL语句如下:

    1. 创建数据库,且编码为utf8

      CREATE DATABASE `yoye` CHARACTER SET utf8 COLLATE utf8_general_ci;
      
      
    2. 创建数据表,且存在自增主键id、字符串字段name

      create table test(
      	id int not null auto_increment primary key,
      	name varchar(100) not null
      );
      
      
    3. 向表中新增一条测试数据

      insert into test (name) values('yoye');
      
      

    三、注入

    controller中注入,代码如下

    import { get, post } from 'midway';
    import { Context, controller, inject, provide, plugin } from 'midway';
    
    @provide()
    @controller('/auth')
    export class AuthController {
      ……
      @plugin()
      mysql;
      ……
    }
    
    

    接下来就可以通过this.mysql愉快的使用了

    四、基础操作

    1. 条件查询,方法一

      const result = await this.mysql.get("test", { id: 1 })
      if (result != null) {
        console.log(result.name);
      }
      
      
    2. 条件查询,方法二

      const result = await this.mysql.select("test", {
        where: {
          name: ['yoye', 'test'], // 相当于 in
        },
        order: [['id', 'desc'], ['name', 'desc']]
      })
      if (result.length) {
        console.log(result[0].name);
      }
      
      
    3. 新增

      const result = await this.mysql.insert("test", { name: "lisa" })
      
      
    4. 修改,方法一

      const result = await this.mysql.update('test', { id: 2, name: 'ella' });
      console.log(result);
      
      
    5. 修改,方法二

      const result = await this.mysql.query('update test set name = ? where id = ?', ["yooyea", 2]);
      console.log(result);
      
      
    6. 删除

      let result = await this.mysql.delete('test', { id: 2 });
      console.log(result);
      
      
    7. 执行原生SQL

      const sql = 'select * from test limit ?'
      const values = [10]
      this.mysql.query(sql, values).then((res:any)=>{
        console.log(res);
      })    
      
      
    8. Mysql事务

      const conn = await this.mysql.beginTransaction();
      try {
        await conn.insert('test', { 'name': 'lisa' });
        await conn.update('test', { id: 2, name: 'ella' });
        await conn.commit();  //提交事务
        const result = await this.mysql.select("test", {})
        console.log(result);
      } catch (err) {
        await conn.rollback();//回滚事务
        throw err;
      }
    漫思
  • 相关阅读:
    MongoDB索引实战技巧
    解决scp/ssh提示输密码慢问题
    mac系统忘记root密码的解决办法
    Javascript DataGrid using the MVC
    便捷的安全检测
    北京出现NW28开头假钞 天津已有相同案例
    12月编程语言排行榜:C#前途无量
    实时股票数据接口大全
    [一定要看完]住在隔壁的刚毕业的大学生小夫妻
    [行業]金山卫士宣布开源 用透明对抗360
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15268519.html
Copyright © 2020-2023  润新知