1.需求
cool-admin 框架中 正常时有一套封装的sql 操作方法 是封装好的
但是有的时候我需要用到mysql 数据操作 语句 select * from 。。。。 这样的语句 cool-damin 也是可以支持的
1.普通sql查询
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/decorator";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行sql
*/
async sql(query) {
return this.nativeQuery("select * from demo_goods a where a.id = ?", [query.id]);
}
}
2.分页 SQL 查询
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/decorator";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行分页sql
*/
async sqlPage(query) {
return this.sqlRenderPage("select * from demo_goods ORDER BY id ASC", query, false);
}
}
3.非 SQL 的分页查询
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/decorator";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { In, Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行entity分页
*/
async entityPage(query) {
const find = this.demoGoodsEntity.createQueryBuilder();
find.where("id = :id", { id: 1 });
return this.entityRenderPage(find, query);
}
}
4.SQL 动态条件
import { DemoGoodsEntity } from "./../entity/goods";
import { Provide } from "@midwayjs/decorator";
import { BaseService } from "@cool-midway/core";
import { InjectEntityModel } from "@midwayjs/typeorm";
import { Repository } from "typeorm";
/**
* 商品示例
*/
@Provide()
export class DemoGoodsService extends BaseService {
@InjectEntityModel(DemoGoodsEntity)
demoGoodsEntity: Repository<DemoGoodsEntity>;
/**
* 执行sql
*/
async sql(query) {
return this.nativeQuery(`
select * from demo_goods a
WHERE 1=1
${this.setSql(query.id, "and a.id = ?", [query.id])}
ORDER BY id ASC
`);
}
}
2.实践
可以的