Egg中使用Sequelize ORM框架操作MySQL--增删改查

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Egg中使用Sequelize ORM框架操作MySQL--增删改查

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

一、什么是Sequelize?

Sequelize是一个基于Promise的Node.js ORM,它具有强大的事务支持,关联关系,预读和延迟加载,读取复制等功能。

二、使用Sequelize操作MySQL数据库

更多操作方法,请参考官方文档:eggjs.org/zh-cn/tutor…

  1. 安装egg-sequelize以及mysql2
  2. 在config/plugin.js中引入egg-sequelize插件
exports.sequelize = {
    enable: true,
    package: 'egg-sequelize'
};
复制代码
  1. 在config/config.default.js中添加下面的配置
config.sequelize = {
    dialect: 'mysql',
    host: '127.0.0.1',
    port: 3306,
    database: 'bank',
    username: 'root',
    password: "123456"
  };
复制代码

三、Sequelize操作MySQL实现数据的增删改查

  1. 在app下新建文件夹model,并在model中创建文件user.js

注意:如果define中的是user,我们定义的数据表要是users,也就是说需要是复数形式。

'use strict';
module.exports = app => {
  const { STRING, INTEGER, DATE } = app.Sequelize;
  const User = app.model.define('user', {
    id: { type: INTEGER, primaryKey: true, autoIncrement: true },
    username: STRING(30),
    age: INTEGER,
    sex: STRING(30),
    created_at: DATE,
    updated_at: DATE,
  });
  return User;
};
复制代码
  1. 可以通过Navicat可视化工具建立下面的数据表结构

增加数据

// 增加数据
  async create() {
    const user = await this.ctx.model.User.create({username: "张三",age: 20});
    this.ctx.body = user;
  }
复制代码

查询数据

更多其他的查询方法,请查看官方文档:www.sequelize.com.cn/core-concep…

  1. 查询所有数据
// 查询数据
  async query() {
    const userList = await this.ctx.model.User.findAll();
    this.ctx.body = userList;
  }
复制代码
  1. 查询指定字段的数据
// 查询指定字段的数据
const userList = await this.ctx.model.User.findAll({attributes: ['id','username']});
复制代码
  1. 应用where进行查询
const userList = await this.ctx.model.User.findAll({where: {"id": 2}});
复制代码
  1. 对数据进行排序
const userList = await this.ctx.model.User.findAll({order: [['id', 'ASC']]});
复制代码

修改数据

  • 根据主键进行修改
async update() {
    // 根据主键修改
    const user = await this.ctx.model.User.findByPk(2);
    user.update({"username": "秦二世","age": 10});
    this.ctx.body = "修改成功"
  }
复制代码

删除数据

  • 根据主键删除某个数据
async delete() {
    const data = await this.ctx.model.User.findByPk(2);
    if (!data) {
      this.ctx.state = 404;
      return;
    }
    data.destroy();
    this.ctx.body = "删除成功";
  }


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
3月前
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
95 2
|
21天前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
57 20
|
2月前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
139 6
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
73 1
|
2月前
|
关系型数据库 MySQL
MySQL表的增删改查(基础篇详细详解)
MySQL表的增删改查(基础篇详细详解)
50 5
|
2月前
|
关系型数据库 MySQL 数据库
mysql的增删改查
本文介绍了MySQL数据库中进行增删改查操作的基本语法和注意事项,包括如何添加、修改和删除数据。
70 2
|
11天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
79 15
|
4天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
11天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。