ruoyi BeanUtils
- package com.ruoyi.common.utils.bean;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- /**
- * Bean 工具类
- *
- * @author ruoyi
- */
- public class BeanUtils extends org.springframework.beans.BeanUtils
- {
- /** Bean方法名中属性名开始的下标 */
- private static final int BEAN_METHOD_PROP_INDEX = 3;
- /** * 匹配getter方法的正则表达式 */
- private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)");
- /** * 匹配setter方法的正则表达式 */
- private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)");
- /**
- * Bean属性复制工具方法。
- *
- * @param dest 目标对象
- * @param src 源对象
- */
- public static void copyBeanProp(Object dest, Object src)
- {
- try
- {
- copyProperties(src, dest);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- /**
- * 获取对象的setter方法。
- *
- * @param obj 对象
- * @return 对象的setter方法列表
- */
- public static List<Method> getSetterMethods(Object obj)
- {
- // setter方法列表
- List<Method> setterMethods = new ArrayList<Method>();
- // 获取所有方法
- Method[] methods = obj.getClass().getMethods();
- // 查找setter方法
- for (Method method : methods)
- {
- Matcher m = SET_PATTERN.matcher(method.getName());
- if (m.matches() && (method.getParameterTypes().length == 1))
- {
- setterMethods.add(method);
- }
- }
- // 返回setter方法列表
- return setterMethods;
- }
- /**
- * 获取对象的getter方法。
- *
- * @param obj 对象
- * @return 对象的getter方法列表
- */
- public static List<Method> getGetterMethods(Object obj)
- {
- // getter方法列表
- List<Method> getterMethods = new ArrayList<Method>();
- // 获取所有方法
- Method[] methods = obj.getClass().getMethods();
- // 查找getter方法
- for (Method method : methods)
- {
- Matcher m = GET_PATTERN.matcher(method.getName());
- if (m.matches() && (method.getParameterTypes().length == 0))
- {
- getterMethods.add(method);
- }
- }
- // 返回getter方法列表
- return getterMethods;
- }
- /**
- * 检查Bean方法名中的属性名是否相等。<br>
- * 如getName()和setName()属性名一样,getName()和setAge()属性名不一样。
- *
- * @param m1 方法名1
- * @param m2 方法名2
- * @return 属性名一样返回true,否则返回false
- */
- public static boolean isMethodPropEquals(String m1, String m2)
- {
- return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX));
- }
- }
ruoyi BeanUtils的更多相关文章
- ruoyi ShiroUtils
package com.ruoyi.framework.util; import org.apache.shiro.SecurityUtils; import org.apache.shiro.cry ...
- java jdbc的优化之BeanUtils组件
1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils ...
- BeanUtils.populate(obj, map);
public static void populate(Object bean, Map<String, ? extends Object> properties) throws Ille ...
- Beanutils基本用法
Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的.无论谁的项目,始终一天都会用得上它.我算是后知后觉了,第一回看到它的时候居然错过. 1.属性的动态gett ...
- BeanUtils
BeanUtils包的使用 BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作. 在使用BeanUtils工具包之前我们需要的Jar包有以下几种: ...
- BeanUtils.copyProperties()方法和PropertyUtils.copyProperties()的区别
首先两者来源于同一个包: import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.Prop ...
- Apache Commons BeanUtils
http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanut ...
- 利用BeanUtils在对象间复制属性
commons-beanutils是jakarta commons子项目中的一个软件包,其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很 ...
- BeanUtils.copyProperties() 用法
BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处 ...
随机推荐
- 如何将sql文件导入数据库
打开navicat.exe,点击打开数据库,右键-运行SQL文件,选中要运行的sql文件,确定后再点击表即可. 注意:此次改变后,源sql文件可以转移路径
- 吴裕雄--天生自然C++语言学习笔记:C++ 引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量 C++ 引用 vs 指针 引用很容易与指针混淆,它们之间有三个主要的 ...
- Ubuntu 18.04 配置 adb
Reference1: https://www.jianshu.com/p/377c6fb6e590 Reference2: https://blog.csdn.net/ppggxn/articl ...
- php语言注意点
PHP大小写问题 http://www.jb51.net/article/38579.htm 推荐大家始终坚持“大小写敏感”,遵循统一的代码规范.1. 变量名区分大小写 2. 函数名.方法名.类名不区 ...
- mysql数据库索引优化
参考 :http://www.cnblogs.com/yangmei123/archive/2016/04/10/5375723.html MySQL数据库的优化: 数据库优化的目的: ...
- OC项目加入swift第三方库遇到的坑
https://www.jianshu.com/p/96d868dcd69c 2017.07.07 16:23* 字数 295 阅读 5218评论 2喜欢 4 首先,在OC项目的Podfile文件中添 ...
- Android自定义View——自定义ViewPager
第一部分:自定义ViewGroup的使用,手势识别器和Scroller滑动 第二部分:处理滑动监听,处理滑动冲突,增加ViewPager的指示器 常见的滑动冲突:外部滑动方向和内部滑动方向不一 ...
- JavaSE--java是值传递还是引用传递
引用是已定义的变量的别名. 按引用传递就是一个变量使用两个名称. 两个变量在内存中的地址都是一样的. 按值传递, 传递的是值的拷贝. C++中可以通过传引用来改变传入的参数的值.在C++中可以通过以下 ...
- MySQL--从库启动复制报错1236
链接:http://blog.csdn.net/yumushui/article/details/42742461 今天在搭建一个MySQL master-slave集群时,执行了change mas ...
- JS实现时间选择器
源代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...