BeanWrapper 接口 操作属性

package org.springframework.beans;

BeanWrapper bw = new BeanWrapperImpl(beanObject);

bw.isReadableProperty("age");	//判断age属性是否可读

bw.setPropertyValue("name", "tom");	//设置name属性的值为tom

bw.getPropertyValue("name");	//取得属性值

PropertyDescriptor[] propertyDescriptors = beanWrapper.getPropertyDescriptors();

Set<String> emptyNames = new HashSet<>();

for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
String propertyName = propertyDescriptor.getName();
Object propertyValue = beanWrapper.getPropertyValue(propertyName);
if (propertyValue == null) {
emptyNames.add(propertyName);
}
}

ParameterizedType 参数化类型

public interface ParameterizedType extends Type {

    Type[] getActualTypeArguments();

    Type getRawType();

    Type getOwnerType();
} List<String> 具有 <> 符号的变量是参数化类型。 Type[] getActualTypeArguments() //获取参数化类型(String) Type getRawType() //获取类型(List) Type getOwnerType() //O<T>.I<S>类型的变量,调用getOwnerType()会返回O (ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
(ParameterizedType) this.getClass().getGenericInterfaces()).getActualTypeArguments()[0]; 获取类的接口信息 1. 返回实现接口信息的Type数组,包含泛型信息 Type[] java.lang.Class.getGenericInterfaces() 2.返回实现接口信息的Class数组,不包含泛型信息 Class<?>[] java.lang.Class.getInterfaces() 1中包含2

@MappedSuperclass 数据库到实体类映射(JPA 注解)

1. 标注为 @MappedSuperclass 的类将不是一个完整的实体类。
他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。 2. 标注为 @MappedSuperclass 的类不能再标注 @Entity 或 @Table 注解,也无需实现序列化接口。

@Temporal 注解(Hibernate JPA 日期注解)

储存在数据库的日期格式

TemporalType.DATE:'yyyy-MM-dd' 格式的日期

TemporalType.TIME:'HH:MM:SS' 格式的日期

TemporalType.TIMESTAMP:'yyyy-MM-dd hh:MM:ss' 格式的日期

在核心的 JPA API 中没有定义 Date 类型的精度,
数据库中表示 Date 类型的数据有 DATE,TIME,TIMESTAMP 三种精度,可通过 @Temporal 注解进行调整。

columnDefinition 属性(JPA 注解)

columnDefinition 属性表示创建表时,该字段创建的SQL语句,一般用于通过 Entity 生成表定义时使用。
如果数据库中表已经建好,该属性没有必要使用。 @Column(name = "Email",columnDefinition="varchar(128) not null")
private String email;

@PreUpdate 和 @PrePersist 注解(JPA 注解)

@PreUpdate
Update 之前被调用。
该注释可以应用于实体类,映射超类或回调监听器类的方法,用于setter()。 @PrePersist
帮助您在持久化之前自动填充实体属性。
Save 之前被调用(实体插入数据库之前)。 @PostPersist
Save 到 Datastore 之后被调用(实体插入数据库之后)。 @PostLoad
在 Entity 被映射(数据载入实体)之后被调用。 @PreRemove 和 @PostRemove
事件的触发由删除实体引起。
@PreRemove 事件在实体从数据库删除之前触发。

@NoRepositoryBean(JPA 注解)

使用了该注解的接口不会被单独创建实例,只会作为其他接口的父接口而被使用。

@NoRepositoryBean
public interface BaseRepository<DOMAIN, ID> extends JpaRepository<DOMAIN, ID> { @NonNull
List<DOMAIN> findAllByIdIn(@NonNull Iterable<ID> ids, @NonNull Sort sort);
} public interface OptionRepository extends BaseRepository<Option, Integer> { Optional<Option> findByKey(String key); void deleteByKey(String key);
}

Halo(四)的更多相关文章

  1. Halo 开源项目学习(四):发布文章与页面

    基本介绍 博客最基本的功能就是让作者能够自由发布自己的文章,分享自己观点,记录学习的过程.Halo 为用户提供了发布文章和展示自定义页面的功能,下面我们分析一下这些功能的实现过程. 管理员发布文章 H ...

  2. NeHe OpenGL教程 第四十四课:3D光晕

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. 使用Docker快速搭建Halo个人博客到阿里云服务器上[附加主题和使用域名访问]

    一.前言 小编买了一个服务器也是一直想整个网站,一直在摸索,看了能够快速搭建博客系统的教程.总结了有以下几种方式,大家按照自己喜欢的去搭建: halo wordpress hexo vuepress ...

  4. Halo 开源项目学习(七):缓存机制

    基本介绍 我们知道,频繁操作数据库会降低服务器的系统性能,因此通常需要将频繁访问.更新的数据存入到缓存.Halo 项目也引入了缓存机制,且设置了多种实现方式,如自定义缓存.Redis.LevelDB ...

  5. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  6. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  7. 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...

  8. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  9. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

随机推荐

  1. ROS基础学习总结

    最近一周因为工程需要,把ROS的一些基础学习了一下,现在做一下总结. 学习资源: #创客智造整理的wiki上的ROS入门教程(中文)https://www.ncnynl.com/category/ro ...

  2. CSS中的flex布局

    1.flex 布局的概念 Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为 Flex 布局,行内元素也可以通过 ...

  3. java File类的使用以及一些函数

    package file; import java.io.File; import java.io.IOException; import org.junit.jupiter.api.Test; /* ...

  4. 韩老师CCNA学习笔记

    1.MSCONFIG服务里面可以选择隐藏Windows服务,就能看出程序安装的服务.即使显示已停止,仍可能在运行 2.命令行输入netstat -anbo ,显示当前连接和端口,数字显示,以及程序的路 ...

  5. 像这样玩C#【转】,觉得文章写的不错就转来啦!版权不在我

    我们玩技术,不是被技术玩.Coding是快乐的,而非苦逼的..Net/C# 这个神器竟然天天有人吐槽.看不下去鸟. 在top10语言中,C#是最优美的语言,没有之一.在top10语言中,C#所可用的标 ...

  6. 专家揭秘:STM32启动过程全解

    电子发烧友网核心提示:本文主要阐述了STM32启动过程全面解析,包括启动过程的介绍.启动代码的陈列以及深入解析. 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方 ...

  7. Ubuntu安装 docker

    安装docker首先要需要一台宿主机, 我目前用VMvare下安装的Ubuntu16.04系统为宿主机,进行docker安装测试. ubuntu安装时选的中文环境,生成的sources.list里面的 ...

  8. git设置忽略文件.gitignore

    在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件 ...

  9. Egyptian Collegiate Programming Contest 2017 (ACM ECPC 2017) - original tests edition

    题目链接:https://codeforces.com/gym/101856 D. Dream Team 题意:n个点,让你连边成为一棵树,边权为顶点的GCD(u,v).求所有边权和的最大值. 思路: ...

  10. Python 与 C 对比

    到目前为止,我接触最多两种语言应该就是python 和 C 语言了. 个人理解 1. 执行速度不同, python为解释性语言,C是编译型语言(需要编译器) 2. python 是基于C的实现,C中很 ...