• Deno MySQL 增删查改接口


    视频演示

    https://www.bilibili.com/video/BV1BT4y1E7Nh/?p=9

    我们一起来完成以下步骤:

    1. 使用之前工程的代码
    2. 创建数据库脚本
    3. 创建数据库连接
    4. 新增员工model
    5. 创建员工仓库类repositories
    6. 创建员工services类
    7. 添加增删查改代码

    #controllers/employeeController.ts

    
    import { Context } from "https://deno.land/x/oak/mod.ts";
    import { Employee } from "../models/employee.ts";
    import employeeService  from "../services/employeeService.ts";
    
    const { cwd } = Deno;
    
    class Controller {
        static async hello(ctx: any){
            //cwd获取当前工程目录 
            //注意 ' !== `
            ctx.render(`${cwd()}/views/index.ejs`,{
                title:"Testing",
                data:{name:" Deepincoding"}
            }); 
        }
    
        static async save(ctx: Context){
            const bodyValue = await ctx.request.body();
            let employee:Employee={
                id: 0,
                name: bodyValue.value.name,
                age: bodyValue.value.age 
            }
    
            const savedEmployee = await employeeService.save(employee);
            console.log("savedEmployee:"+savedEmployee);
            ctx.response.body = savedEmployee;
    
        }
    
        static async update(ctx: Context){
            var bodyValue = await ctx.request.body();
             let updateEmployee: Employee ={
                 id:bodyValue.value.id,
                 name:bodyValue.value.name,
                 age:bodyValue.value.age
             }
             const updatedEmployee = await employeeService.update(updateEmployee);
             ctx.response.body=updatedEmployee;
         }
    
         static async findById(ctx: any){
            const id = ctx.params.id;
            console.log("id:"+id);
            const employee = await employeeService.findById(id);
            ctx.response.body=employee;
         }
    
         static async findAll(ctx: any){
            const employees = await employeeService.findAll();
            ctx.response.body=employees;
         }
    
         static async deleteById(ctx: any){
            const id = ctx.params.id;
            const success = await employeeService.deleteById(id);
            ctx.response.body=success;
         }
    
    
    }
    
    export default Controller;
    
    

    #database/database.ts

    import { Client } from "https://deno.land/x/mysql/mod.ts"
    
    const client = await new Client().connect({
            hostname: "127.0.0.1",
            username: "root",
            db: "deno",
            poolSize: 3, 
            password: "123456"
    });
    
    export default client;
    

    #models/employee.ts

    export interface Employee{
        id: number,
        name: string,
        age: number
    }
    
    

    #router/employeeRouter.ts

    import { Router } from "https://deno.land/x/oak/mod.ts";
    import Controller from "../controllers/employeeController.ts";
    
    const router = new Router();
    
    router.get("/",Controller.hello);
    
    router.post("/save",Controller.save);
    router.put("/update",Controller.update);
    router.get("/findById/:id",Controller.findById);
    router.get("/findAll",Controller.findAll);
    router.delete("/deleteById/:id",Controller.deleteById);
    
    
    export default router;
    

    #services/employeeService.ts

    import { Employee } from  "../models/employee.ts";
    import emlpoyeeRepo from "../repositories/employeeRepo.ts";
    
    class employeeService{
        static async save(employee: Employee){
            return emlpoyeeRepo.save(employee);
        }
    
        static async update(employee: Employee){
            return  emlpoyeeRepo.update(employee);  
        }
        static async findById(id: number){
            return  emlpoyeeRepo.findById(id);
        }
        static async findAll(){
            return  emlpoyeeRepo.findAll();
        }
    
        static async deleteById(id: number){
            return  emlpoyeeRepo.deleteById(id);
        }
    
        
    }
    
    export default employeeService;
    
    
    

    #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";
    
    const ejsEngine = engineFactory.getEjsEngine();
    const oakAdapter = adapterFactory.getOakAdapter();
    
    const app = new Application();
    app.use(viewEngine(oakAdapter,ejsEngine));
    app.use(router.routes());
    app.use(router.allowedMethods());
    
    console.log("Server Port 8000");
    
    await app.listen({port: 8000 })
    
    
    
    

     

  • 相关阅读:
    爬虫开发9.scrapy框架之递归解析和post请求
    爬虫开发7.scrapy框架简介和基础应用
    爬虫开发6.selenuim和phantonJs处理网页动态加载数据的爬取
    爬虫开发4.三种数据解析方式
    Gym–101061A Cards(有待更新)
    GYM 101061 I. Playing with strings(有待更新)
    HDU2072 单词数
    HDU2057 A + B Again(十六进制加法运算)
    HDU2056 Rectangles
    CodeForces 992C Nastya and a Wardrobe
  • 原文地址:https://www.cnblogs.com/JavaWeiBianCheng/p/13098836.html
Copyright © 2020-2023  润新知