Halo(四)
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(四)的更多相关文章
- Halo 开源项目学习(四):发布文章与页面
基本介绍 博客最基本的功能就是让作者能够自由发布自己的文章,分享自己观点,记录学习的过程.Halo 为用户提供了发布文章和展示自定义页面的功能,下面我们分析一下这些功能的实现过程. 管理员发布文章 H ...
- NeHe OpenGL教程 第四十四课:3D光晕
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 使用Docker快速搭建Halo个人博客到阿里云服务器上[附加主题和使用域名访问]
一.前言 小编买了一个服务器也是一直想整个网站,一直在摸索,看了能够快速搭建博客系统的教程.总结了有以下几种方式,大家按照自己喜欢的去搭建: halo wordpress hexo vuepress ...
- Halo 开源项目学习(七):缓存机制
基本介绍 我们知道,频繁操作数据库会降低服务器的系统性能,因此通常需要将频繁访问.更新的数据存入到缓存.Halo 项目也引入了缓存机制,且设置了多种实现方式,如自定义缓存.Redis.LevelDB ...
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...
- 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
随机推荐
- 【leetcode】719. Find K-th Smallest Pair Distance
题目如下: 解题思路:对于这一类知道上限和下限,求第N位是什么的题目,可以先看看二分查找的方法可不可行.首先对nums进行排序,很显然任意两个元素距离绝对值最小是0,最大是nums[-1] - num ...
- Component series.liquidFill not exists. Load it first.
vue 项目中使用水波球报错Component series.liquidFill not exists. Load it first. 解决办法:安装 echarts-liquidfill npm ...
- fedora23下编译安装OpenCV-3.1.0
所需安装环境 1.安装编译环境 $ sudo dnf install gcc gcc-c++ ncurses-devel cmake 2.安装gtk+2.x $ sudo dnf install gt ...
- TestStack.White安装详解
一.安装 NuGet TestStack.White是通过NuGet进行安装的.NuGet最低支持VS2010.我使用的VS2015. 安装方式一 :从Visual Studio的工具->扩展和 ...
- Asp.Net Core 第07局:路由
总目录 前言 本文介绍Asp.Net Core 路由. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 第一手:路由概述 1.路由主要用于处理特定的请求. ...
- App知识点(持续更新......)
1.app的性能测试,即专项测试,需要重点关注那些方面? 内存.cpu占用.耗电量.流量.流畅度等 2.什么是activity?它的生命周期? Activity是一个Android的应用组件,它提供屏 ...
- LeetCode 102. Binary Tree Level Order Traversal 动态演示
按层遍历树,要用到queue class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { ...
- T1215:迷宫
[题目描述] 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Extense处在某 ...
- vue-router 传递参数的几种方式
本文转载自:https://blog.csdn.net/crazywoniu/article/details/80942642 vue-router传递参数分为两大类 编程式的导航 router.pu ...
- 循环神经网络(RNN)入门介绍
循环神经⽹络是为更好地处理时序信息而设计的.它引⼊状态变量来存储过去的信息,并⽤其与当前的输⼊共同决定当前的输出.循环神经⽹络常⽤于处理序列数据,如⼀段⽂字或声⾳.购物或观影的顺序,甚⾄是图像中的⼀⾏ ...