java学习笔记(6) - 面向对象(6)
1. 工具类的封装
工具类的封装主要是将一些我们常用的方法或者功能封装在一个类中,这就实现了当我们在开发工程中根据常用的方法来自定义封装类,加快开发进度.
package chapter04;import java.text.SimpleDateFormat; // 自定义日期格式包import java.util.Calendar;import java.util.Date; // 日期包import java.util.Random; // 随机数生成包(java自带)import java.util.UUID; // 随机生成字符串包(java自带)public class Util { public static void main(String[] args) throws Exception { System.out.println(StringUtil.isEmpty(null));// true(空字符串) System.out.println(StringUtil.isEmpty(""));/ ...
java学习笔记(5) - 面向对象(5)
1. 包装类
包装类(Wrapper Class): Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。
为了使用方便Java中将8中基本数据类型进行了封装:除了Integer和Character类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。
boolean —> Boolean
char —> Character
byte—> Byte
short—> Short
long—> Long
int —> Integer
float—> Float
double—> Double
作用:
作为 和基本数据类型对应的类 类型存在,方便涉及到对象的操作。
包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
// TODO 包装类Byte b = null;S ...
java学习笔记(4) - 面向对象(4)
1. 对象package chapter04;public class oop2 { public static void main(String[] args){ // TODO 常见类和对象 // java.lang.Object : 对象(默认加载) Object obj = new Person(); // 讲对象转换成字符串。 // toString默认打印的就是对象的内存地址,所以,为了能够更直观理解对象的内容,所以可以重写这个方法 String s = obj.toString(); System.out.println(s); // chapter04.Person@3b07d329 // TODO 获取对象的内存地址 int i = obj.hashCode(); System.out.println(i);// 990368553(内存地址) // TODO 判断两个对象是否相等, 如果相 ...
java学习笔记(3) - 面向对象(3)
1. 接口package chapter03;// 外部类 只能使用 public 或者 默认(default)/什么都不写public class oop1 { public static void main(String[] args){ // 接口 Computer c = new Computer();// 实例化电脑 Light light = new Light(); // 实例化电灯1 c.usb1 = light;// 电脑接口1接入电灯1 Light light1 = new Light();// 实例化电灯2 c.usb2 = light1;// 电脑接口1接入电灯1 c.powerSupply();// 成功输出 "电脑提供电源" System.out.println(c.name); // 输出"电脑",类继承接口中的属性 // 解决子类继承单一父类的情况 D ...
java学习笔记(2) - 面向对象(2)
1. 外部类和内部类package chapter03;// 外部类 只能使用 public 或者 默认(default)/什么都不写public class oop1 { public static void main(String[] args){ // 内部类的使用 // 1. 先实例化外部类 OuterClass outer = new OuterClass(); // 2. 再实例化内部类 OuterClass.InnerClass innerClass = outer.new InnerClass(); System.out.println(innerClass.name); // 成功输出`内部类`属性 }}// 外部类 只能使用 public 或者 默认(default)/什么都不写class OuterClass{ // 内部类就是在类里面在声明一个类,当成外部类的一个属性使用即可,这样就可以试试用任意的访问权限了 ...
java学习笔记(1) - 面向对象(1)
1. 创建类和使用类package chapter02_面向对象;import java.util.Date; // 导入对应的包(java.lang这个包不需要导入,jvm自动导入)// import java.util.*; // 引入一个包中所有类public class oop { public static void main(String[] args) { // 面向对象 /* * 类(表示归纳的整理) * class 类名(第一个字母一般要大写){ * 特征(属性) * 功能(方法) * } * * 创建对象语法结构 new * */ Cooking a = new Cooking(); // 前面的数据类型为以对应类为原型限制的对象 a.name = "红烧牛肉面"; a.food = &quo ...
nodejs学习笔记(37) - nest学习笔记(7) :日志模块
nest学习笔记(7) :日志模块
官方文档
Nest附带一个默认的内部日志记录器实现,它在实例化过程中以及在一些不同的情况下使用,比如发生异常等等(例如系统记录)。这由 @nestjs/common 包中的 Logger 类实现。你可以全面控制如下的日志系统的行为:
完全禁用日志
指定日志系统详细水平(例如,展示错误,警告,调试信息等)
覆盖默认日志记录器的时间戳(例如使用 ISO8601 标准作为日期格式)
完全覆盖默认日志记录器
通过扩展自定义默认日志记录器
使用依赖注入来简化编写和测试你的应用
你也可以使用内置日志记录器,或者创建你自己的应用来记录你自己应用水平的事件和消息。
更多高级的日志功能,可以使用任何 Node.js 日志包,比如Winston或Pino,来生成一个完全自定义的生产环境水平的日志系统。
日志等级
Log : 通用日志,按需进行记录(打印)
Warning:警告日志,比如: 尝试多次进行数据库操作
Error:严重日志,比如:数据库异常
Debug: 调试日志,比如:加载数据日志
Verbose:详细日志,所有的操作与详细信息(非必要不打印) ...
nodejs学习笔记(36) - nest学习笔记(6) :联通数据库的CRUD操作以及高级查询
nest学习笔记(6) :联通数据库的CRUD操作以及高级查询重新回忆依赖注入
我们都知道nestjs最核心的概念就是依赖注入,所有的开发思想都是基于这个概念来实现出来的,因此nestjs官方将所有数据库的常见操作都高度封装在TypeORM这个核心包里面,这就意味着在项目中做CRUD操作时,我们无需再写SQL语句
通过上图我们可以看出,Nestjs中的DI容器会自动的将项目中携带@Injectable装饰符的类进行注册,最后会进一步看该类中的构造函数(Constructor),了解对应的类与类之间的依赖关系之后进行对应类实例的创建,在项目中用的时候引入即可!
CRUD操作
CRUD操作在之前的博客已有介绍点击跳转
关联查询: 一对一,一对多一对一
所谓一对一关联查询,就是在数据库中,某一张表与另一张表建立外键约束,我们在查询其中一张表数据的时候,同时返回外键约束的那张表的对应数据,这里我们展示User表以及Profile表建立的外键约束关系(UserId)
1. 首先确定两张表的实体中都设置了一对一关系(OneToOne)// user.entities.ts(user表实 ...
nodejs学习笔记(35) - nest学习笔记(5) :创建多个实体以及创建一对一,一对多,多对多关系
1. 创建实体(前面的博客以及提到过)// user.entities.ts(用户表)// 编写实体,用于一一对应数据库中的数据映射关系import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';// 定义一个实体类/* 当然我们也可以自定义对应数据映射到数据库中的存储属性 我们可以设置存储的类型,长度等.. */@Entity()export class User { // 定义Boys的id (一般设置为自增) @PrimaryGeneratedColumn() // 设置自动生成不重复的数据 id: number; // 定义user名字 /* 设置数据库中的存储形式 */ @Column({ type: 'varchar', length: 255 }) username: string; // 定义用户密码 @Column({ type: ' ...
nodejs学习笔记(34) - nest学习笔记(5) :连接数据库(Mysql , MongoDB)
根据环境变量动态连接数据库一. 连接Mysql数据库
我们之前以及粗略的学习过链接数据库以及环境变量的配置以及校验,那么下面就使用这三者结合起来,实现项目根据环境变量意义开发模式动态的连接对应的数据库
1. app.module.ts(根据环境变量动态链接数据库)import { Module } from '@nestjs/common';import { BoysModule } from './boys/boys.module';import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';import { ConfigModule, ConfigService } from '@nestjs/config'; // 引入环境配置模块import * as dotenv from 'dotenv'; // 引入 dotenv ...