deno如何连接mysql_Deno MySQL ORM

视频演示

一起来完成以下步骤:创建数据库连接

创建Model,也就是实体类

写新增、修改、查询和删除

运行:deno run --allow-net --allow-read --allow-write main.ts

#controllers/employeeController.ts

//引入Context

import { Context } from "https://deno.land/x/oak/mod.ts";

//引入仓库类

import employeeRepo from "../repositories/employeeRepo.ts";

//获取当前目录方法

const { cwd } = Deno;

class Controller {

static async hello(ctx: any) {

//cwd获取当前工程目录

//注意 ' !== `

ctx.render(`${cwd()}/views/index.ejs`, {

title: "Testing",

data: { name: "www.deepincoding.com" }

});

}

//保存

static async save(ctx: Context) {

const {value} = await ctx.request.body();

const result = await employeeRepo.save(value);

ctx.response.body = result;

}

//获取所有

static async findAll(ctx: Context){

const result = await employeeRepo.findAll();

ctx.response.body = result;

}

//更新

static async update(ctx: Context) {

const {value} = await ctx.request.body();

const result = await employeeRepo.update(value);

ctx.response.body = result;

}

//根据ID获取

static async findById(ctx: any){

const id = ctx.params.id;

const result = await employeeRepo.findById(id);

ctx.response.body = result;

}

//根据ID删除

static async deleteById(ctx: any){

const id = ctx.params.id;

const result = await employeeRepo.deleteById(id);

ctx.response.body = result;

}

}

export default Controller;

#database/database.ts

import { DataTypes, Database, Model } from 'https://deno.land/x/denodb/mod.ts';

//MySQL连接

const mysqldb = new Database('mysql', {

host: '127.0.0.1',

username: 'root',

password: '123456',

database: 'deno'

});

//导出

export default mysqldb;

#models/employeeModel.ts

import { DataTypes, Database, Model } from 'https://deno.land/x/denodb/mod.ts';

//员工实体

class EmployeeModel extends Model {

//表名

static table = 'employee';

//字段

static fields = {

id: { primaryKey: true, autoIncrement: true },

name: DataTypes.STRING,

age: DataTypes.INTEGER

};

}

export default EmployeeModel;

#repositories/employeeRepo.ts

//引入EmployeeModel实体

import EmployeeModel from "../models/employeeModel.ts";

import mysqldb from "../database/database.ts";

class employeeRepo{

//初始化数据库

static async init(){

mysqldb.link([EmployeeModel]);

await mysqldb.sync({ drop: false });

}

//新增

static async save (employee: any){

return EmployeeModel.create(employee);

}

//获取所有

static async findAll(){

return EmployeeModel.all();

}

//更新

static async update (employee: any){

return EmployeeModel.where("id",employee.id).update(employee);

}

//根据ID查询

static async findById(id: number){

return EmployeeModel.where("id",id).get();

}

//删除

static async deleteById(id: number){

return EmployeeModel.deleteById(id);

}

}

export default employeeRepo;

#routers/employeeRouter.ts

//引入Router

import { Router } from "https://deno.land/x/oak/mod.ts";

//引入自定义Controller

import Controller from "../controllers/employeeController.ts";

//创建router

const router = new Router();

router.get("/",Controller.hello);

router.post("/save",Controller.save);

router.get("/findAll",Controller.findAll);

router.put("/update",Controller.update);

router.get("/findById/:id",Controller.findById);

router.delete("/deleteById/:id",Controller.deleteById);

export default router;

#main.ts

//引入所需的依赖模块

import { Application } from "https://deno.land/x/oak/mod.ts"

import {viewEngine,engineFactory,adapterFactory} from "https://deno.land/x/view_engine/mod.ts";

import router from "./routers/employeeRouter.ts";

import employeeRepo from "./repositories/employeeRepo.ts";

//初始化数据库

await employeeRepo.init();

//创建相关页面引擎对象

const ejsEngine = engineFactory.getEjsEngine();

const oakAdapter = adapterFactory.getOakAdapter();

//创建app

const app = new Application();

//应用页面引擎

app.use(viewEngine(oakAdapter,ejsEngine));

//应用路由

app.use(router.routes());

app.use(router.allowedMethods());

//log 日志

console.log("Server Port 8000");

//端口

await app.listen({port: 8000 })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值