设置实体类属性默认值
由于最近使用eladmin框架,这个框架很不好的地方是后面,给实体类设置默认值不生效,数据库设置也同样不生效。
无奈,由于很多新增、修改的方法都要去处理。所以,写了一个切面方法,偷懒一下。
public class ConfigAop {/*** 定义切入点,切入点为com.example.demo.aop.AopController中的所有函数*通过@Pointcut注解声明频繁使用的切点表达式*/@Pointcut("execution( * com.party.modules.system.service.impl..*.create(..))")public void BrokerAspect(){}/*** @description 在连接点执行之前执行的通知*/@Before("BrokerAspect()")public Object doBeforeGame(JoinPoint joinPoint){Arrays.toString(joinPoint.getArgs());System.out.println("经纪人正在处理球星赛前事务!"+Arrays.toString(joinPoint.getArgs()));Object entily=joinPoint.getArgs()[0];Field[] fields = entily.getClass().getDeclaredFields();// 循环获取字段名称数据for (int i = 0; i < fields.length; i++) {// 获取当前的属性名称String name = fields[i].getName();// 判断当前是否为序列号名称 (序列号名称必须为:serialVersionUID ,否则会报NoSuchMethodException异常)if ("serialVersionUID".equals(name)) {//跳出当前循环,进入下一次循环continue;}//将属性的首先字符大写,方便构造GET,SET方法name = name.substring(0, 1).toUpperCase() + name.substring(1);try {// 获取属性类型String typeName = fields[i].getGenericType().toString();// 获取属性GET方法Method get = entily.getClass().getMethod("get" + name);// 通过属性的GET方法获取属性对应值Object value = get.invoke(entily, new Object[]{});// 判断属性类型为BigDecimal类型if ("class java.math.BigDecimal".equals(typeName)) {// 属性对应值是否为空if (value != null) {} else {// 获取属性SET方法(注意:方法的参数值类型必须设置正确,则报方法不存在异常)Method set = entily.getClass().getMethod("set" + name, BigDecimal.class);// 通过SET方法给予赋值set.invoke(entily, BigDecimal.ZERO);}}// 判断属性类型为Long类型if ("class java.lang.Long".equals(typeName)) {if (value != null) {} else {Method set = entily.getClass().getMethod("set" + name, Long.class);set.invoke(entily, 0L);}}// 判断属性类型为Long类型if ("class java.lang.Integer".equals(typeName)) {if (value != null) {} else {Method set = entily.getClass().getMethod("set" + name, Integer.class);if("status".equals(name)){set.invoke(entily, 1);}else{set.invoke(entily, 0);}}}// 判断属性类型为String类型if ("class java.lang.String".equals(typeName)) {if (value != null) {} else {Method set = entily.getClass().getMethod("set" + name, String.class);set.invoke(entily, "");}}// 判断属性类型为Date类型if ("class java.util.Date".equals(typeName)) {if (value != null) {} else {Method set = entily.getClass().getMethod("set" + name, Date.class);set.invoke(entily, new Date());}}} catch (Exception e) {log.error(e.getMessage(), e);}}log.info("结束的参数,{}",entily);return entily;}}
设置实体类属性默认值相关推荐
- java给实体类设置默认值_java 给实体类赋默认值通用方法
package com.clamc.common.util; import java.lang.reflect.Field; import java.lang.reflect.Modifier; im ...
- spring aop 修改请求参数实体类属性的值
文章目录 创建注解 定义 Pointcut 定义 advise 总结 创建注解 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTI ...
- UE4 C++入门之路4-PostInitProperties函数详解(设置属性默认值的四种方法)
PostInitProperties函数详解 前言 设置属性默认值的四种方法 一 声明时赋值 二 构造函数赋值 三 构造函数初始化列表 四 PostInitProperties 前言 也许在工作或者学 ...
- 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
[转]MyBatis学习总结(四)--解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体 ...
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
2019独角兽企业重金招聘Python工程师标准>>> 一.准备演示需要使用的表和数据 CREATE TABLE orders(order_id INT PRIMARY KEY AU ...
- Mybatis解决字段名与实体类属性名不相同的冲突
在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...
- MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
一.准备演示需要使用的表和数据 CREATE TABLE orders(order_id INT PRIMARY KEY AUTO_INCREMENT,order_no VARCHAR(20), or ...
- html标签默认值,HTML标签CSS属性默认值汇总
HTML标签CSS属性默认值,在你需要还原默认值的时候比较有用. 以前一直在找这份文档,今天偶然在网上看到了.除了inline和block的定义,主要是要注意body|h1~h6|blockquote ...
- mysql指定当前时间为默认时间_MySQL设置当前时间为默认值的方法
方法一.是用alert table语句: 复制代码代码如下: use test_db1; create table test_ta1( id mediumint(8) unsigned not nul ...
最新文章
- @RequestParam加与不加的区别
- 关于SWT开发的一个坑——Invalid thread access
- 计算机的主要危害是什么意思,cpu使用率是什么意思 cpu使用率低但是电脑卡原因...
- nyoj 42 一笔画问题 (搜索+队列)
- 为什么本地硬盘无法启动计算机,win10专业版系统本地磁盘打不开怎么办?
- 数据结构笔记--线性表定义与实现(Swift)
- python 邻接矩阵_阿里巴巴举荐,Python视频,免费分享,用python求解特征向量和拉普拉斯矩阵...
- PHP在线预览word、excel等office文档
- ENSP之STP协议基本配置教程
- 计算机键盘使用大写用什么键,操作方法:如何解决Win10系统键盘的大小写切换键(大写锁定)的问题?...
- javawebJAVAJSP酒店预订系统jsp酒店管理系统jsp民宿预订酒店jsp客房预订系统jsp宾馆客房预订系统
- vs2017更新出错:The entire Box execution exiting with result code: 0x0
- Hadoop 容错之1.X的单点故障 到 2.X的HA和HDFS Federation
- java excel 数据有效性_Excel设置数据有效性实现单元格下拉菜单的3种方法
- Ubuntu boot menu
- 光纤收发器A,B端含义解释
- JavaScript ------ DOM(事件基础)
- cucumber java从入门到精通_cucumber java从入门到精通(4)Scenario Outline及数据驱动...
- 学了编程却写出错误代码?程序运行结果与想象不符?当bug出现时该何去何从,别担心,这篇文章统统告诉你!手把手带你调试代码,让bug原形毕露!
- 把若干个亚群合并到一起得到subsetdata merge到一起