BeanUtils

【java基础】从反射开始(Reflection)

你说的曾经没有我的故事 提交于 2021-02-12 04:44:18
Java学习笔记 https://github.com/SnailDev/java-learning 和我一起启程... 反射(Reflection) 定义 在运行状态中, 对于任意的一个类,都能够知道这个类的所有属性和方法; 对于任意的一个对象,都能够调用他的任意一个方法和属性; 这种动态获取类的信息以及动态调用对象的方法的功能称做Java的反射机制。 功能 只要给定类的全名,即可获取类的所用信息; 运行时获取任意一个对象所属的类对象; 运行时获取类中所有属性对象,可对其操作(包含私有属性); 运行时获取类中、父类中所有方法,可对其调用。 应用 目前主流的应用框架如Struts2、Hibernate、Spring、SpringMVC等的核心全部都是利用Java的反射机制来实现的。 组成 Class Constructor Field Method 类的类型(Class) 常用方法 getName() 获得类中完整名称 getDeclaredFields() 获取类中所有属性(含私有) getDeclaredMethods() 获取类中所有方法(含私有) getConstructors() 获取类的构造方法(不含私有) newInstance() 实例化类的对象(类的构造方法中参数需为空) 获取Class对象的方式 利用Class类forName(

java递归生成树结构的数据

痴心易碎 提交于 2021-01-06 04:29:43
@Data @EqualsAndHashCode(callSuper =true) @ApiModel(value = "AccountCaptionVo", description = "会计科目") public class AccountCaptionVo extends BaseModel { @ApiModelProperty(value ="会计科目名称",name = "captionName") private String captionName; @ApiModelProperty(value = "会计科目编码",name = "captionCode") private String captionCode; @ApiModelProperty(value = "父类编码",name = "parentId") private Long parentId; @ApiModelProperty(value = "系统科目",name = "systematicSubjects") private String systematicSubjects; @ApiModelProperty(value = "借贷方向",name = "lendingDirection") private String lendingDirection;

封装了easyExcel的工具类,包含字段校验功能,使用validate校验注解即可

我的未来我决定 提交于 2020-12-28 22:38:51
package com.ciics.cscloud.xinsurance.social.utils.excel; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.exception.ExcelAnalysisException; import com.alibaba.excel.util.StringUtils; import lombok.Data; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; import javax.validation.ConstraintViolation; import javax.validation

Java之POI的excel导入导出

我的未来我决定 提交于 2020-12-06 09:57:26
  一、Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。   二、基本结构   HSSF - 提供读写 Microsoft Excel 格式档案的功能。   XSSF - 提供读写 Microsoft Excel OOXML 格式档案的功能。   HWPF - 提供读写 Microsoft Word 格式档案的功能。   HSLF - 提供读写Microsoft PowerPoint格式档案的功能。   HDGF - 提供读写 Microsoft Visio 格式档案的功能。   三、这里我们只介绍xls,2003版的excel导入导出   1)导入需要的依赖包(pom.xml)    < dependency > < groupId > org.apache.poi </ groupId > < artifactId > poi </ artifactId > < version > 3.17 </ version > </ dependency >   2)简单介绍一下excel的导入方式 public static void main(String

JAVA项目之增删改查

こ雲淡風輕ζ 提交于 2020-12-05 12:49:34
public class ProductDao { // 查询所有商品 // BeanListHandler查询所有商品 public List<Product> getAll() throws SQLException { QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); String sql = "select * from product" ; List <Product> arr = qr.query(sql, new BeanListHandler<Product>(Product. class )); return arr; } // 添加商品 public void add(Product product) throws SQLException { QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); String sql = "insert into product(pid,pname,market_price,shop_price,pdate,pdesc,is_hot,cid) values(?,?,?,?,?,?,?,?)" ; Object[] obj = { product.getPid(), product

两难!到底用Apache BeanUtils还是Spring BeanUtils?

ε祈祈猫儿з 提交于 2020-12-05 00:56:31
点击上方“ 方志朋 ”,选择“ 设为星标 ” 回复” 666 “获取新整理的面试文章 在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进行属性复制到DTO,但是对象格式又不一样,所以我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。 对象拷贝 在具体介绍两种 BeanUtils 之前,先来补充一些基础知识。它们两种工具本质上就是对象拷贝工具,而对象拷贝又分为深拷贝和浅拷贝,下面进行详细解释。 什么是浅拷贝和深拷贝 在Java中,除了 基本数据类型之外,还存在 类的实例对象这个引用数据类型,而一般使用 “=”号做赋值操作的时候,对于基本数据类型,实际上是拷贝的它的值,但是对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际还是指向的同一个对象。而浅拷贝和深拷贝就是在这个基础上做的区分,如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行引用的传递,而没有真实的创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员变量,则认为是深拷贝。 简单来说: 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝

BeanUtils.copyProperties拷贝结构不同类测试

点点圈 提交于 2020-12-02 05:59:47
一 先定义两个不同的类 这两个类的结构是不同的。 1 SysUser package toolutils; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor @Builder public class SysUser implements Serializable { private String id; private String username; private Integer age; private String password; private Integer status; private List<SysRole> roles; private Date createDate; private static final long serialVersionUID = 1L; } 2 SysUserVO package toolutils; import

[Java复习] Spring IoC

流过昼夜 提交于 2020-11-30 00:41:06
1. Spring bean的生命周期? 1. 对Bean进行实例化(相当于new) 对于BeanFactory 当客户向容器请求一个尚未初始化的bean(或初始化bean需要注入另外一个尚未初始化的依赖bean)时,容器会调用createBean进行实例化。 例如XmlBeanFactory通过Resource装载Spring配置信息启动Ioc容器,然后通过BeanFactory.getBean获取Bean。注意是, 启动 IoC容器时,不会初始化Bean,初始化是在getBean调用时。 容器通过获取BeanDefinition对象中的信息进行实例化,这步只是实例化,并没有依赖注入。 实例化对象被包装在BeanWrapper对象中,BeanWrapper提供了设置对象属性的接口。 BeanWrapper是对Bean的包装, 一般情况下是在spring ioc内部使用,提供了访问bean的属性值、属性编辑器注册、类型转换等功能,方便ioc容器用统一的方式来访问bean的属性. 对于ApplicationContext 当容器启动结束后,便已经实例化所有的bean。 2. 设置对象属性(依赖注入) 实例化后的对象被封装在BeanWrapper对象中,并且此时对象仍然是一个原生的状态,并没有进行依赖注入。 紧接着,Spring根据BeanDefinition中的信息进行依赖注入

JDBC---后端服务器与数据库交互的桥梁

我是研究僧i 提交于 2020-11-22 07:18:53
Java 数据库连接技术:通过 Java 程序从数据库中把相应的数据提取到 java 程序中 1.JDBC 概念 2. JDBC 的步骤 1) 导入数据驱动 jar 包 ① 右键项目名称 / 新建一个文件夹 folder ,名字叫 lib ② 把 *.jar 包 copy 到 lib目录下 ③ 右键 * .jar/Build path/Add Build Path 把 *.jar加入到项目构建路径中 2) JDBC 执行过程 通过反射类加载 classforname ()把 mysql 提供的驱动类注册到 java 里面去 3) JDBC -CRUD 操作 ① insert 、 update 、 delete 语句执行过程一样 ② select 语句需要处理 Result Set结果集 ③ 资源的关闭流程 在 try…cathc…finally中确保所有的资源都去关闭一次,关闭顺序,后进来的先关闭 3. ResultSet 数据 元数据:描述数据的数据 Mysql 默认数据:用来存储和描述用户创建的数据信息(元数据库) 对 rs 结果集进行描述的相应数 getColumnClassName(): 包路径 getCatalogName(): 数据库的名字 getColumnCount(): 列数 getColumnLabel():id getColumnName():sid

Digester

风流意气都作罢 提交于 2020-10-28 15:15:16
1. 介绍 这是一个apache 用于解析XML的工具类,这里依赖到的包有以下几个 commons-digester3-3.2.jar cglib-2.2.2.jar asm-3.3.1.jar commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar 2.案例说明 下面就用一个实际的几个类来说明他的用法 测试类 import java.io.File; import java.io.IOException; import org.apache.commons.digester3.Digester; import org.xml.sax.SAXException; import com.io.test.apache.digester.model.DigesterRule; import com.io.test.apache.digester.model.School; import com.io.test.apache.digester.model.SchoolClass; public class DigesterTest { public static void main(String[] args) { // 创建一个Digester Digester d = new Digester(); // 添加规则组 d