当前位置: 首页 > article >正文

Node学习笔记之ORM

ORM 全拼Object-Relation Mapping.

中文意为 对象-关系映射.

主要实现模型对象到关系数据库数据的映射.

比如:把数据库表中每条记录映射为一个模型对象

优点 :

1、只需要面向对象编程, 不需要面向数据库编写代码.

2、对数据库的操作都转化成对类属性和方法的操作.

3、不用编写各种数据库的sql语句.

4、实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.

5、不在关注用的是mysql、oracle...等.

6、通过简单的配置就可以轻松更换数据库, 而不需要修改代码.

缺点 :

1、相比较直接使用SQL语句操作数据库,有性能损失.

2、根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.

3、有局限性,ORM中没有提供的查询功能需要写会sql语句

三、ORM的基本使用(增删改查)

把nodejs-orm文件夹复制到db文件夹下,并修改其中index.js中的数据库连接设置

// 数据库连接设置
let orm_config = {
  host: 'localhost',//数据库地址
  port:'3306',
  user: 'root',//用户名,没有可不填
  password: '',//密码,没有可不填
  database: 'qianduan_test'//数据库名称
}
3.1、查询数据

查询所有学生的所有信息

const db = require("./db/nodejs-orm/index.js");

app.get("/",(req, res)=>{
    let Student = db.model("students");
    Student.find((err,results)=>{
        res.send(results);
    });
})

查询指定字段(find、数组参数)

let Student = db.model("students");
Student.find(["name", "age"],(err,results)=>{
    res.send(results);
});

按条件查询(find、字符串参数)

let Student = db.model("students");   
Student.find("name='小月月'",(err,results)=>{  //这里的引号里面书写的是where后面的字符串
    res.send(results);
});

分页查询(limit、对象参数 where\number\count)

let Student = db.model("students");  
//where查询条件,为可选项,number第几页; count表示每页条数
Student.limit({where:"age>18",number:1,count:5},(err,results)=>{
    res.send(results);
});
3.2、增加数据

增加单条记录, insert、对象参数、属性就是列名

let Student = db.model("students");
Student.insert({name:'赵云',age:20},(err,results)=>{

    res.send("增加成功");
});

同时增加多个数据, insert、数组参数、元素为对象、属性就是列名

let Student = db.model("students");
let arr = [{name:'刘备'}, {name:"关羽"},{name:"张飞"}];

Student.insert(arr,(err,results)=>{
    res.send("增加成功");
});
3.3、删除数据

按条件删除记录 delete、字符串参数

let Student = db.model("students");
Student.delete('age=0',(err,results)=>{
     res.send("删除成功");
});

清空表里面所有内容 delete、无参数

let Test1 = db.model("test1");

Test1.delete((err,results)=>{
        res.send("删除成功");
});
3.4、修改数据

修改所有学生name为小明 update、对象参数、属性就是列名

let Student = db.model("students");
Student.update({name:'小明'},(err,results)=>{
    console.log(results);
});

修改id为1的年龄为30 update、字符串参数1、对象参数2、属性就是列名

let Student = db.model("students");
Student.update('id=1',{age:30},(err,results)=>{
    res.send("修改成功");
});
3.5、自定义执行sql语句

上面的情况如果满足不了需求,直接使用自定义执行sql语句的方式 sql、字符串参数

let Student = db.model("students");
Student.sql('select * from students',(err,results)=>{
    res.send("执行成功");
});


http://www.kler.cn/a/105400.html

相关文章:

  • Kubernetes Etcd不可用日志:NOSPACE 的问题修复
  • 简化路径(C++解法)
  • FL Studio21.2官方重磅更新及新功能一分钟介绍
  • Android stdio 无法新建或打开AIDL文件(解决方法)
  • 关于高并发你必须知道的几个概念
  • Ubuntu设置允许root用户登录
  • vscode 通过ssh 连接虚拟机vmware(ubuntu)
  • html鼠标悬停图片放大
  • JavaScript中的可变(Mutable)和不可变(Immutable)
  • nodejs+vue购物网站设计系统-计算机毕业设计
  • 代码随想录算法训练营第2天| 977有序数组的平方、209长度最小的子数组。
  • ROS自学笔记十五:URDF工具
  • ChatGPT 与 Python Echarts 完成热力图实例
  • pycharm远程连接Linux服务器
  • centos7系统下,实现1台服务器免密登录多台服务器功能
  • 系统架构设计师之使用McCabe方法可以计算程序流程图的环形复杂度
  • 【设计模式】第5节:创建型模式之“简单工厂、工厂方法和抽象工厂模式”
  • 搜维尔科技:Geomagic Touch X力反馈设备【开箱图真机测试】
  • 【postman】postman的使用与postman汉化
  • 嵌入式系统设计师考试笔记之操作系统基础复习笔记二