视频演示
https://www.bilibili.com/video/BV1BT4y1E7Nh/?p=9
我们一起来完成以下步骤:
- 使用之前工程的代码
- 创建数据库脚本
- 创建数据库连接
- 新增员工model
- 创建员工仓库类repositories
- 创建员工services类
- 添加增删查改代码
#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 })