Node.js学习十六(ORM框架 sequelize)


一、什么是ORM框架

      ORM(Object Relational Mapping,对象关系映射),是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,通过描述对象和数据库之间映射的元数据,把程序中的对象自动持久化到关系数据库中。它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
      持久(Persistence)化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
      ORM就是把业务实体中的对象与关系数据库中的关系数据关联起来。

类<—>表
属性<—>列
对象<—>行

      对象-关系映射(ORM)系统一般以中间件的形式存在。
      ORM技术特点:
      1、提高了开发效率。ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层,即开发者不用在面向对象和关系型数据库之间进行来回的切换
      2、ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。

二、通过ORM实现CRUD(增、删、改、查)

我们在info数据库中有一个表db_employee,数据如下:
在这里插入图片描述

1、什么是Sequelize

      Node中通过Sequelize模块来实现ORM映射。
      Sequelize模块是基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),。它当前支持MySQL、MariaDB、SQLite、PostgreSQL、Sql Server 数据库。

特点:

①强大的模型定义,支持虚拟类型。
②支持完善的数据验证,减轻前后端的验证压力。
③Sequelize的查询非常全面和灵活

2、Sequelize模块的使用方法

(1)安装

①安装MySQL2:npm install mysql2
②安装Sequelize:npm i sequelize

(2)配置sequelize

      首先我们创建express项目,然后安装上述模块,再新建文件夹db,db里新建配置文件夹config,模型文件夹model,在db里创建mydb.js,对sequelize模块进行配置:
在这里插入图片描述

//导入sequelize模块
const Sequelize = require('sequelize');

//配置数据库连接对象(默认带有数据库连接池):数据库名、用户名、密码、配置对象
const sequelize = new Sequelize('info','root','iampwd',{
   
    host: 'localhost',
    port: 3306,
    dialect: 'mysql', //数据库类型
    //数据库连接池
    pool:{
   
        max: 5,//连接池中最大连接数量
        min: 0,//连接池中最小连接数量
        idle: 10000 //若某个线程10秒没有使用,就释放
    },
    debug: true  //显示调试信息
})

module.exports = sequelize;

(3)创建模型

①模型的概念

      模型是Sequelize的本质,模型是表示数据库中一个表的抽象,在Sequelize中,它是一个扩展Model的类,通常一个表对应一个模型。
      该模型告诉Sequelize它所表示的实体的一些信息,例如数据库中表的名称以及它拥有哪些列(以及它们的数据类型)。
      Sequelize中的模型有一个名字。这个名称不必与它在数据库中表示的表的名称相同。通常,模型具有单数名称(如User),而表具有复数名称(如Users)。

②定义模型的方式

      在Sequelize中,模型可以用两种等价的方式定义,我们今天主要学习第一种方法定义模型

sequelize.define(modelName, attributes, options)

      在model文件夹下创建employeeModel.js文件:

const Sequelize = require('sequelize');
//导入配置文件
const db = require('../config/mydb');
const Employee = db.define('db_employee',{
   
    id:{
     //属性名可以和列名相同,也可以不同
        ty
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值