`

非常便捷的Spring mvc更新持久对象数据方法

阅读更多
@Controller
@RequestMapping("/user")
public class UserController {

    private UserRepository userRepository;

    @Autowired
    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    /**
     * @param username
     * @return 根据user从持久层获取用户信息, username==null则返回一个新的user对象,否则从持久层加载User的信息
     */
    @ModelAttribute("user")
    public User loadModel(@RequestParam(value = "username", required = false) String username) {
        return username == null ? createUser() : userRepository.loadUserByUsername(username);
    }

    /**
     * @return 当username未提供时, 将返回一个新的User对象,
     *         因为模型在调用了{@link UserController#loadModel} 方法之后,
     *         {@link org.springframework.web.method.annotation.ModelAttributeMethodProcessor}不会再为{@link UserController#save(com.feexon.domain.User)}方法创建User实例
     */
    private User createUser() {
        return new User();
    }

    /**
     * 设置@ModelAttribute("user")绑定的属性,其他属性将被忽略
     *
     * @param binder
     */
    @InitBinder("user")
    public void setBindingProperties(DataBinder binder) {
        binder.setAllowedFields("password");
    }

    @RequestMapping("/save")
    @ResponseBody
    public User save(@ModelAttribute("user") User user) {
        if (hasRegistered(user)) {
            userRepository.saveUser(user);
        }
        return user;
    }

    /**
     * 当user未注册时,{@link UserController#loadModel(java.lang.String)}返回的值为null.
     *
     * @param user
     * @return
     */
    private boolean hasRegistered(User user) {
        return user != null;
    }

}

 

分享到:
评论

相关推荐

    最全最经典spring-mvc教程

    Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring JDBC和MyBatis等持久层框架用于数据库操作,以及Spring Data JPA、Hibernate等ORM工具,使得数据库...

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    在实际开发中,Spring MVC常常与Spring Data JPA或MyBatis等持久层框架结合使用,以方便数据库操作。此外,Spring MVC还能够与其他Spring模块(如Spring Security、Spring WebSocket等)无缝集成,提供完整的解决...

    maven与spring MVC

    此外,Spring还提供了一些便捷的工具,如HibernateTemplate或JdbcTemplate,简化了DAO(数据访问对象)层的编写。 Spring MVC与Validation: 对于数据验证,Spring MVC支持JSR 303/349(Java Bean Validation)规范...

    spring mvc 整合包

    7. **DAO(Data Access Object)**:数据访问对象,处理数据库交互,通常结合MyBatis或JPA等持久层框架使用。 8. **JSP或Thymeleaf等视图技术**:用于创建动态网页,展示数据。Spring MVC通过ModelAndView中的视图...

    spring mvc框架依赖全面jar

    首先,`hibernate3.jar` 是Hibernate ORM框架的库,它允许开发者将Java对象映射到关系数据库,提供了数据持久化的解决方案。Hibernate简化了数据库操作,使得开发者可以更专注于业务逻辑,而不是底层数据库交互。 `...

    spring mvc mybatis 整合源码,带数据库脚本,带详细注释

    - 在Spring MVC的Controller中,通过@Autowired注入Mapper接口,调用其方法进行数据操作。 4. **数据库脚本** - 提供的数据库脚本通常包含创建表、插入初始数据等内容,是项目启动前必要的准备工作。 - 使用...

    spring mvc mybatis velocity 示范

    Spring MVC 提供了一个模型-视图-控制器(MVC)架构,使得开发者可以清晰地将业务逻辑、数据处理和用户界面进行解耦。它通过DispatcherServlet作为前端控制器,负责接收请求并分发到相应的处理器。Controller组件...

    Spring mvc整合mybatis例子

    在IT行业中,Spring MVC 和 MyBatis 是两个非常重要的框架,它们分别负责Web应用程序的控制器层和数据访问层。Spring MVC 提供了模型-视图-控制器架构模式的实现,而MyBatis则是一个轻量级的SQL映射框架,用于简化...

    spring mvc架包

    此外,Spring Data JPA 和 MyBatis 等持久层框架与 Spring MVC 集成,使得数据库操作更加便捷。 总之,Spring MVC 为 Web 开发提供了一个高效、灵活的解决方案,通过其丰富的注解和组件,可以极大地提高开发效率和...

    spring mvc mysql hibernate

    它通过Hibernate配置文件和实体类,自动建立对象与数据库表的映射关系,提供透明的数据持久化服务。Hibernate支持CRUD操作,事务管理,以及查询语言HQL,使得数据库操作更加便捷和高效。 MySQL是一款广泛使用的开源...

    Spring MVC+ Spring+ Mybatis 框架搭建

    Spring MVC、Spring和Mybatis是Java开发中非常流行的三大开源框架,它们的组合,通常被称为“SSM”框架。SSM框架的使用可以极大地提高Web应用的开发效率,通过合理的解耦,使得各组件能够更好地协同工作。接下来,...

    Spring MVC框架的各种依赖包下载

    15. **整合其他技术**:Spring MVC可以轻松集成其他技术,如MyBatis、Hibernate等持久层框架,以及Spring Data JPA、Spring Security等。 通过下载提供的Spring MVC依赖包,你可以快速开始构建自己的Spring MVC项目...

    Spring MVC简单例子

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的Web应用程序。这个框架基于Spring IoC(Inversion of ...实践中遇到的问题和解决方法也会加深对Spring MVC的理解,有助于提升开发技能。

    spring mvc mybatis 整合 maven

    - 改:创建更新方法,获取需要修改的数据,更新后调用Mapper的update方法。 - 查:创建查询方法,调用Mapper的select方法获取数据,可以是单条或列表,返回给Controller层。 10. 测试:编写JUnit测试类,对...

    两个小时学会了Spring MVC

    业务对象封装了业务规则和数据,而数据访问组件则负责与数据库或其他持久化存储进行交互。 2. **View**:视图层负责渲染数据并展示给用户。在Spring MVC中,视图通常由JSP、Thymeleaf或FreeMarker等模板引擎来实现...

    Spring mvc + Spring + Mybatis 整合demo

    在本文中,我们将深入探讨如何将Spring MVC、Spring和Mybatis这三大流行框架整合到一个Java Web项目中,创建一个高效、灵活的数据访问层。这个整合的Demo项目名为"ssm-demo",它是一个基于Maven构建的项目,这意味着...

    Spring Mvc实例

    数据操作通常涉及与数据库的交互,Spring MVC结合Spring Data JPA或MyBatis等持久层框架可以方便地实现这一功能。例如,使用Spring Data JPA,我们可以创建一个Repository接口来操作数据库: ```java public ...

    spring mvc demo加用户模块的

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的模型-视图-控制器(MVC)架构支持。这个“spring mvc demo加用户模块的”项目应该是一个包含用户管理功能的Spring MVC示例,...

    bbs.zip_Spring mvc bbs_hibernate bbs_spring mvc_spring mvc hiber

    Spring MVC的Model对象可以用来存储业务数据,而View则可以使用JSP、Thymeleaf等模板引擎进行渲染,呈现用户界面。 Hibernate,作为一个优秀的对象关系映射(ORM)框架,消除了Java代码与数据库之间的直接交互,...

Global site tag (gtag.js) - Google Analytics