springboot-注解等笔记

VO: 表现层对象(View Object),主要对应展示界面显示的数据对象,用一个VO对象来封装整个界面展示所需要的对象数据,数据脱敏,去掉用户隐私数据。
VO:View Object,视图层,其作用是将指定页面的展示数据封装起来。

model:用于接收数据库中的数据,通过mybatis 的ORM对象关系映射来获取数据

IDType

AUTO 数据库ID自增
INPUT 用户输入ID
ID_WORKER 全局唯一ID,Long类型的主键
ID_WORKER_STR 字符串全局唯一ID
UUID 全局唯一ID,UUID类型的主键
NONE 该类型为未设置主键类型

这个是在yml文件中定义的全局配置

field-strategy:

IGNORED (忽略 如果字段是null,就用null更新)
not_null (不为null, 当字段是null时,就忽略这个字段的更新)
not_empty (不为null和‘’, 当字段是null或者是空时,忽略这个字段的更新)

设置map-underscore-to-camel-case属性为true来开启驼峰功能

2.使用Mybatis时,如果查询语句中某些字段值是null的,则这个字段就无法返回。对于后台数据处理来说,这是一个致命的问题,于是通过修改Mybatis的配置来解决这个问题。
在springmvc下,在mybatis的配置文件里面增加以下配置即可:
mybatis.configuration.call-setters-on-nulls=true

calc() 函数用于动态计算长度值。

width: calc(100% - 100px);

contents()

contents() 方法返回所有直接子元素,包括被选元素的文本和注释节点。
contents() 方法也能访问 iframe 的 HTML。

box-sizing:content-box

当我们设置 box-sizing: content-box; 时,浏览器对盒模型的解释遵从我们之前认识到的 W3C 标准,当它定义width和height时,它的宽度不包括border和padding。

iframe标签的属性

align:left、right、top、middle、bottom。用于规定如何根据周围的元素来对齐此框架。不赞成使用。请使用样式代替。

frameborder:1、0。用于规定是否显示框架周围的边框。

height:pixels、%。用于规定iframe的高度。

longdesc:URL。规定一个页面,该页面包含了有关iframe的较长描述。

marginheight:pixels。定义iframe的顶部和底部的边距。

marginwidth:pixels。定义iframe的左侧和右侧的边距。

name:frame_name。规定iframe的名称。

scrolling:yes、no、auto。规定是否在iframe中显示滚动条。

src:URL。规定在iframe中显示的文档的URL。

width:pixels。%。定义iframe的宽度。

this,that的用法

$(‘#conten').click(function(){
    
    
//this是被点击的#conten
var that = this;
$(.conten').each(function(){
    
    
//this是.conten循环中当前的对象
//that仍然是刚才被点击的#conten
});
});

this对象在程序中随时会改变,而var that=this之后,that没改变之前仍然是指向当时的this,这样就不会出现找不到原来的对象。

window.setInterval(“reinitIframe()”, 200);

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

justify-content 属性

justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。

CSS object-fit 属性

对图片进行剪切,保留原始比例:
object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。

object-fit 一般用于 img 和 video 标签,一般可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等。
fill 默认,不保证保持原有的比例,内容拉伸填充整个内容容器。
contain 保持原有尺寸比例。内容被缩放。
cover 保持原有尺寸比例。但部分内容可能被剪切。
none 保留原有元素内容的长度和宽度,也就是说内容不会被重置。
scale-down 保持原有尺寸比例。内容的尺寸与 none 或 contain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。
initial 设置为默认值,关于 initial

注解

@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
注意在使用@NotBlank等注解时,一定要和@valid一起使用,不然@NotBlank不起作用

public class demo{
    
    
    @NotNull(message="用户id不能为空")
    private Long userId;
    @NotBlank(message="用户名不能为空")
    private String userName;
    @NotBlank(message="年龄不能为空")
    private String age;
}

@PostMapping("/xxx")
public String createDemo(@RequestBody @Valid Demo demo, BindingResult result){
    
    
    if(result.hasErrors())
        return result.getFieldError().getDefaultMessage();
    return "sucess";
}

@Accessors(chain = true)注解

这个注解是来自与Lombok里的,具体的作用是开启链式编程,让我们写代码更加方便。
翻译是存取器。通过该注解可以控制getter和setter方法的形式。
fluent 若为true,则getter和setter方法的方法名都是属性名,且setter方法返回当前对象。

@EqualsAndHashCode(callSuper = true)

该注解用于子类对象之间进行比较的时候
不加该注解的影响:子类对象属性值一致,但其继承的父类对象属性值不一致,在比较的时候会出现比较结果不对的情况。

Spring注解之@validated的使用

spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
比如,我们判断一个输入参数是否合法,可以用如下方式

@Slf4j

@Slf4j是用作日志输出的,一般会在项目每个类的开头加入该注解,如果不写下面这段代码,并且想用log

@component (把普通pojo实例化到spring容器中,相当于配置文件中的

<bean id="" class=""/>

@ConfigurationProperties会根据配置文件的信息调用声明对象的set方法

@ResponseStatus注解作用

@ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中

这里我们说一下加在目标方法上的这种情况,注解中有两个参数,value属性设置异常的状态码,reaseon是异常的描述,

需要重点注意的是不管该方法是不是发生了异常,将@ResponseStatus注解加在目标方法上,一定会抛出异常。但是如果没有发生异常的话方法会正常执行完毕。

@ExceptionHandler:统一处理某一类异常,从而能够减少代码重复率和复杂度
@ControllerAdvice:异常集中处理,更好的使业务逻辑与异常处理剥离开;其是对Controller层进行拦截
@ResponseStatus:可以将某种异常映射为HTTP状态码

IllegalArgumentException不合法的参数异常
expiration.before(new Date())判断当前日期是否在过期日期之前。

isAccessAllowed:判断是否登录
在登录的情况下会走此方法,此方法返回true直接访问控制器
onAccessDenied:是否是拒绝登录
没有登录的情况下会走此方法
如果isAccessAllowed方法返回True,则不会再调用onAccessDenied方法,如果isAccessAllowed方法返回Flase,则会继续调用onAccessDenied方法。而onAccessDenied方法里面则是具体执行登陆的地方。由于我们已经登陆,所以此方法就会返回True(filter放行),所以上面的onPreHandle方法里面的onAccessDenied方法就不会被执行。

Assert 类中的常用断言方法:

notNull(Object object)
  当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null;
isTrue(boolean expression) / isTrue(boolean expression, String message)
  当 expression 不为 true 抛出异常;
notEmpty(Collection collection) / notEmpty(Collection collection, String message)
  当集合未包含元素时抛出异常。
  notEmpty(Map map) / notEmpty(Map map, String message) 和 notEmpty(Object[] array, String message) / notEmpty(Object[] array, String message) 分别对 Map 和 Object[] 类型的入参进行判断;
hasLength(String text) / hasLength(String text, String message)
  当 text 为 null 或长度为 0 时抛出异常;
hasText(String text) / hasText(String text, String message)
  text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;
isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message)
  如果 obj 不能被正确造型为 clazz 指定的类将抛出异常;
isAssignable(Class superType, Class subType) / isAssignable(Class superType, Class subType, String message)
  subType 必须可以按类型匹配于 superType,否则将抛出异常;

@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值

Spring注解之@validated的使用
spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
比如,我们判断一个输入参数是否合法,可以用如下方式

longValue()是Long类的一个方法,用来得到Long类中的数值。

おすすめ

転載: blog.csdn.net/qq_46199553/article/details/120585062