赞
踩
npm install typeorm -g
typeorm init --name MyProject --database mysql
{ "type": "mysql", // 选用的数据库 "host": "localhost", // 数据库地址 "port": 3306, // 数据库端口 "username": "test", // 数据库用户名 "password": "test", // 数据库密码 "database": "test", // 数据库 "synchronize": true, // 是否同步true表示会自动将src/entity里面定义的数据模块同步到数据库生成数据表(已经存在的表的时候再运行会报错) "dropSchema": true, // 删除数据库中的表 "logging": false, // 是否打印日志,执行sql语句时候输出原生sql,也可以配置成一个数组["query", "error", "schema"]指定sql的执行类型 "charset": "utf8mb4", // 编码 "timezone": "local", // 时区,默认本地,也可以写"+8" "entityPrefix": "", // 给此数据库连接上的所有表(或集合)加的前缀。 "entities": [ // 定义TypeORM需要查找的数据模型的,可以定义多个 "src/entity/**/*.ts" ], "migrations": [ // 数据迁移文件生成的地方 "src/migration/**/*.ts" ], "subscribers": [ // 订阅(用的少) "src/subscriber/**/*.ts" ], "cli": { // 数据迁移工具使用的 "entitiesDir": "src/entity", "migrationsDir": "src/migration", "subscribersDir": "src/subscriber" } }
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from "typeorm"; @Entity({ name: 'user' }) export class User { @PrimaryGeneratedColumn({ type: 'int', name: 'id', comment: '主键id' }) id: number; @Column({ type: 'varchar', nullable: false, length: 50, unique: true, name: 'username', // 如果是一样的可以不指定 comment: '用户名' }) username: string; @Column({ type: 'varchar', nullable: false, length: 100, comment: '密码' }) password: string; @Column('tinyint', { nullable: false, default: () => 0, name: 'is_del', comment: '是否删除,1表示删除,0表示正常' }) isDel: number; @CreateDateColumn({ type: 'timestamp', nullable: false, name: 'created_at', // mysql数据库规范是使用下划线命名的,不使用驼峰 comment: '创建时间' }) createdAt: Date; @UpdateDateColumn({ type: 'timestamp', nullable: false, name: 'updated_at', comment: '更新时间', }) updateAt: Date; }
关于@Entity()中可扩充的参数
name配置映射到数据库表名,如果不指定会以实体类名字创建数据表
orderBy排序方式(一般不用)
engine引擎(一般不用)
database数据库(一般不用,除非多个数据库的时候)
不管是使用@PrimaryGeneratedColumn()、@Column()等装饰器装饰字段的我们都叫字段装饰器
type配置字段类型,在mysql中字符类型可能是char、varchar、text,数字类型可能是int、tinyint,小数类型可能是float、double、decimal(10,2)等
name真正映射到mysql数据库中字段名字,如果不指定会默认以对象的字段为名字(建议都指定)
length长度,比如在mysql中字段为varchar的时候指定字段长度
nullable在mysql中字段是否可以为NULL值,默认为false
select改字段是否可以被查询出来(针对使用typeORM的查寻操作,不针对你使用原生SQL语句操作),默认为true表示可以被查询出来
default默认值,比如插入数据的时候,没传递该字段的值,就默认一个值
unique是否唯一约束
comment备注该字段是做什么的(建议都写上,方便阅读)
enum枚举类型
array该列是否以数组
import "reflect-metadata";
import { createConnection } from "typeorm";
import { User } from "./entity/User";
createConnection().then(async connection => {
const user = new User()
user.username = '张三';
user.password = '123456';
// save里面传递一个对象
connection.manager.save(user).then(user => {
console.log('插入成功', user);
});
}).catch(error => console.log(error));
createConnection().then(async connection => {
// 2.使用async+await
const user = new User();
user.username = '李四';
user.password = '123456';
const result = await connection.manager.save(user);
console.log('插入结果', result);
}).catch(error => console.log(error));
createConnection().then(async connection => {
// 3.使用Repositories方式新增数据
const user = new User();
user.username = '王五';
user.password = '123456';
const userRepository = connection.getRepository(User);
const result = await userRepository.save(user);
console.log(result);
}).catch(error => console.log(error));
createConnection().then(async connection => {
// 4.删除数据
// 4.1创建一个句柄
const userRepository = connection.getRepository(User);
// 4.2根据句柄去查询实体findOne传递数字会默认根据id查询
const user = await userRepository.findOne(1);
// 4.3删除数据
await userRepository.remove(user);
}).catch(error => console.log(error));
// 5.修改数据
const userRepository = connection.getRepository(User);
const user = await userRepository.findOne(2);
user.password = '23456';
await userRepository.save(user);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。