js实现orm
使用 TypeORM 实现 JavaScript ORM
TypeORM 是一个流行的 ORM 框架,支持 JavaScript 和 TypeScript。它支持多种数据库,如 MySQL、PostgreSQL、SQLite 等。
安装 TypeORM 及相关依赖:
npm install typeorm reflect-metadata mysql2
创建实体类(Entity):
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
age: number;
}
配置数据库连接:
import { createConnection } from "typeorm";
import { User } from "./entity/User";
createConnection({
type: "mysql",
host: "localhost",
port: 3306,
username: "root",
password: "password",
database: "test",
entities: [User],
synchronize: true,
}).then(connection => {
// 连接成功后进行操作
}).catch(error => console.log(error));
使用 Sequelize 实现 JavaScript ORM
Sequelize 是另一个流行的 ORM 库,支持多种 SQL 数据库。
安装 Sequelize 及相关依赖:

npm install sequelize mysql2
定义模型和连接数据库:
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
const User = sequelize.define('User', {
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
},
age: {
type: DataTypes.INTEGER
}
});
(async () => {
await sequelize.sync();
// 数据库操作代码
})();
使用 Prisma 实现 JavaScript ORM
Prisma 是一个现代的数据层工具,可以作为 ORM 使用。
安装 Prisma:
npm install prisma @prisma/client
初始化 Prisma:

npx prisma init
定义数据模型(schema.prisma):
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
firstName String
lastName String
age Int
}
生成客户端并执行迁移:
npx prisma migrate dev --name init
npx prisma generate
使用 Prisma 客户端:
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function main() {
await prisma.user.create({
data: {
firstName: 'John',
lastName: 'Doe',
age: 30
}
});
}
main()
.catch(e => console.error(e))
.finally(async () => await prisma.$disconnect());
自定义简单 ORM 实现
对于简单的需求,可以创建一个基本的 ORM 层:
class SimpleORM {
constructor(connection) {
this.connection = connection;
}
async create(table, data) {
const keys = Object.keys(data);
const values = keys.map(key => data[key]);
const placeholders = keys.map(() => '?').join(',');
const query = `INSERT INTO ${table} (${keys.join(',')}) VALUES (${placeholders})`;
return new Promise((resolve, reject) => {
this.connection.query(query, values, (err, results) => {
if (err) return reject(err);
resolve(results);
});
});
}
async find(table, conditions = {}) {
const whereClause = Object.keys(conditions).length > 0
? `WHERE ${Object.keys(conditions).map(key => `${key} = ?`).join(' AND ')}`
: '';
const values = Object.values(conditions);
const query = `SELECT * FROM ${table} ${whereClause}`;
return new Promise((resolve, reject) => {
this.connection.query(query, values, (err, results) => {
if (err) return reject(err);
resolve(results);
});
});
}
}
// 使用示例
const mysql = require('mysql2');
const connection = mysql.createConnection({/* 配置 */});
const orm = new SimpleORM(connection);
orm.create('users', { name: 'John', age: 30 });
orm.find('users', { age: 30 });






