Springboot中关于Beanutils.copyProperties( )的用法

简介: Beanutils.copyProperties( )

BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。

很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。

但Beanutils.copyProperties( )可以代替这样繁琐的操作

举个简单的例子

先新建2个类

1、User类

public class User {
    private String id;
    private String username;
    private String password;
    private String role;
    private Integer limitTimes;
    private Integer number;
    private String questions;
    private Long startTime;
    private Long endTime;
    private String testUrl;
    private Long createTime;
    public User() {
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public Integer getLimitTimes() {
        return limitTimes;
    }
    public void setLimitTimes(Integer limitTimes) {
        this.limitTimes = limitTimes;
    }
    public Integer getNumber() {
        return number;
    }
    public void setNumber(Integer number) {
        this.number = number;
    }
    public Long getStartTime() {
        return startTime;
    }
    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }
    public Long getEndTime() {
        return endTime;
    }
    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }
    public Long getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Long createTime) {
        this.createTime = createTime;
    }
    public String getQuestions() {
        return questions;
    }
    public void setQuestions(String questions) {
        this.questions = questions;
    }
    public String getTestUrl() {
        return testUrl;
    }
    public void setTestUrl(String testUrl) {
        this.testUrl = testUrl;
    }
}

image.gif

2、UserVo

public class User {
    private String id;
    private String username;
    private String password;
    private String role;
    private Integer limitTimes;
    private Integer number;
    private String questions;
    private Long startTime;
    private Long endTime;
    private String testUrl;
    private Long createTime;
    public User() {
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public Integer getLimitTimes() {
        return limitTimes;
    }
    public void setLimitTimes(Integer limitTimes) {
        this.limitTimes = limitTimes;
    }
    public Integer getNumber() {
        return number;
    }
    public void setNumber(Integer number) {
        this.number = number;
    }
    public Long getStartTime() {
        return startTime;
    }
    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }
    public Long getEndTime() {
        return endTime;
    }
    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }
    public Long getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Long createTime) {
        this.createTime = createTime;
    }
    public String getQuestions() {
        return questions;
    }
    public void setQuestions(String questions) {
        this.questions = questions;
    }
    public String getTestUrl() {
        return testUrl;
    }
    public void setTestUrl(String testUrl) {
        this.testUrl = testUrl;
    }
}

image.gif

3、测试

@GetMapping("/test123456")
    public void test123456() {
        User user = new User();
        user.setLimitTimes( 11 );
        user.setStartTime( (long) 22 );
        user.setEndTime( (long) 33 );
        user.setId("66");
        user.setUsername("zj");
        user.setRole( "aaa" );
        user.setCreateTime( (long) 77 );
        user.setPassword("aaa");
        user.setNumber( 1 );
        user.setQuestions( "aaa" );
        user.setTestUrl( "url" );
        //以上为初始化
        //法1
        UserVo userVo= new UserVo();
        userVo.setLimitTimes(user.getLimitTimes());
        userVo.setStartTime( user.getStartTime());
        userVo.setEndTime( user.getEndTime());
        userVo.setId(user.getId());
        userVo.setUsername(user.getUsername());
        userVo.setRole( user.getRole() );
        userVo.setCreateTime( user.getCreateTime() );
        userVo.setPassword(user.getPassword());
        userVo.setNumber( user.getNumber());
        userVo.setQuestions( user.getQuestions() );
        userVo.setTestUrl( user.getTestUrl() );
//        法2
        UserVo userVo2= new UserVo();
        BeanUtils.copyProperties(user,userVo2);
        System.out.println( "----" );
    }

image.gif

打个断点:

image.png

image.gifimage.png


image.png

是不是Beanutils.copyProperties( ) 用起来很简单,方便呢:P

相关文章
|
6月前
|
NoSQL Java MongoDB
SpringBoot中MongoDB的那些高级用法
本文探讨了在Spring Boot项目中使用MongoDB的多种方式及其高级用法。MongoDB作为一种NoSQL数据库,在某些场景下相较于SQL数据库有着独特的优势。文中详细介绍了在Spring Boot中使用MongoDB的三种主要方式:直接使用官方SDK、使用Spring JPA以及使用MongoTemplate,并对比分析了它们之间的差异。此外,文章深入讲解了Spring Data MongoDB提供的各种注解(如@Id, @Document, @Field等)以简化操作流程,并探讨了MongoTemplate监听器的应用,如设置主键值、记录日志等。
257 2
|
6月前
|
NoSQL Java MongoDB
SpringBoot中MongoDB的那些骚操作用法
MongoDB作为一种NoSQL数据库,在不需要传统SQL数据库的表格结构的情况下,提供了灵活的数据存储方案。在Spring Boot中可以通过官方SDK、Spring JPA或MongoTemplate等方式集成MongoDB。文章重点介绍了Spring Data MongoDB提供的注解功能,例如`@Id`、`@Document`和`@Field`等,这些注解简化了Java对象到MongoDB文档的映射。此外,文中还讨论了MongoTemplate监听器的使用,包括设置主键值和日志记录等高级特性。
288 0
SpringBoot中MongoDB的那些骚操作用法
|
6月前
|
Java API
SpringBoot Scheduled 常见用法
SpringBoot Scheduled 常见用法
61 0
|
8月前
|
JSON Java 数据格式
Spring Boot 中的 @DateTimeFormat 和 @JsonFormat 的用法及作用
【6月更文挑战第11天】在开发 Spring Boot 应用时,处理日期和时间数据是一个常见的需求。Spring Boot 提供了两个注解 @DateTimeFormat 和 @JsonFormat 来帮助我们处理这些问题。
544 4
|
8月前
|
前端开发 Java 开发者
深入理解 Spring Boot 注解:核心功能与高级用法详解
深入理解 Spring Boot 注解:核心功能与高级用法详解
430 1
|
9月前
|
Java 开发者 Spring
Springboot中的@Bean用法以及常见问题
【5月更文挑战第27天】@Bean 注解是Spring框架中用于声明Spring应用上下文中的bean的一种方式。在Spring Boot中,@Bean注解通常与@Configuration注解一起使用,在配置类(Configuration class)中定义bean。
256 2
|
9月前
|
XML Java API
springboot 常用的注解标签的概念及用法RequiredArgsConstructor 、RestController、RequestMapping
【4月更文挑战第12天】在 Spring Boot 中,@RequiredArgsConstructor, @RestController, 和 @RequestMapping 是常用的注解,每个都有其特定的功能和用法,它们合起来极大地简化了 Spring 应用程序的开发过程。
257 2
|
9月前
|
安全 Java Spring
springboot @Resource、@AutoWaire的用法实战
【4月更文挑战第3天】在Spring Boot中,@Autowired和@Resource注解都用于自动注入依赖,但它们在底层工作方式和使用的场合上存在一些差异。理解这些差异有助于更有效地使用Spring框架。
258 1
|
9月前
|
存储 Java 数据库连接
springboot ConstraintValidator的概念与用法
【4月更文挑战第25天】在 Java 中,ConstraintValidator 是用于自定义注解验证的接口,属于 Bean Validation(JSR 303 和 JSR 349)标准的一部分。这个接口定义了如何实施一个特定的约束注解的验证逻辑。
282 0
|
XML Java 数据格式
SpringBoot入门(五) 之 @ConfigurationProperties和@Value的区分与用法
SpringBoot入门(五) 之 @ConfigurationProperties和@Value的区分与用法
188 0