`
ts1993
  • 浏览: 13924 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

新项目 用Spring MVC, 后台 要自动封装成对象的一些注意事项

阅读更多
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id = null; // 表id字段(mysql 自动增长字段)

@Column
private  String  name = null; //班级名称

// @Column
// private String content = null; // 上课时间(课程表)  ? 换成一个实体 CourseCalendar.class

/**
* 我是 伟大 的课程 安排 表
*/
@OneToMany(cascade = CascadeType.PERSIST /** 班级删了? 我擦, 关我飞机事 **/, fetch = FetchType.LAZY /** 懒加载 ?? **/,
mappedBy = "classes")
private List<CourseCalendar> courseCalendars = null; //课程安排

@Column
private Integer status = null; //状态

@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "classes_course",
      joinColumns ={@JoinColumn(name = "classes_id", referencedColumnName = "id")},    
      inverseJoinColumns = {@JoinColumn(name = "course_id", referencedColumnName = "id")    
})
private List<Course> courses = null; //多对多  课程 和 班级 对应关系(这个班级要上的课程列表)

@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "classes_teacher",
      joinColumns ={@JoinColumn(name = "classes_id", referencedColumnName = "id")},    
      inverseJoinColumns = {@JoinColumn(name = "teacher_id", referencedColumnName = "id")    
})
private List<Teacher> teachers = null; //多对多  班级和授课老师  对应关系

/**
* 我是伟大的学生列表
*/
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST, mappedBy = "classes")
private List<Student> students = null; //这个班的学员

@JsonSerialize(using = WiterJsonString.class)
@Temporal(TemporalType.TIMESTAMP) //时间戳, 精确到秒
private Date popened = null; //计划开班时间

@JsonSerialize(using = WiterJsonString.class)
@Temporal(TemporalType.TIMESTAMP) //时间戳, 精确到秒
private Date pclosed = null; //计划结业时间

@JsonSerialize(using = WiterJsonString.class)
@Temporal(TemporalType.TIMESTAMP) //时间戳, 精确到秒
private Date signend = null; //报名截至日期

@JsonSerialize(using = WiterJsonString.class)
@Temporal(TemporalType.TIMESTAMP) //时间戳, 精确到秒
private Date opened = null; //实际开班日期

@JsonSerialize(using = WiterJsonString.class)
@Temporal(TemporalType.TIMESTAMP) //时间戳, 精确到秒
private Date closed = null; //实际结业时间

@JsonSerialize(using = WiterJsonString.class)
@Temporal(TemporalType.TIMESTAMP) //时间戳, 精确到秒
private Date created = null; //创建时间

@JsonSerialize(using = WiterJsonString.class)
@Temporal(TemporalType.TIMESTAMP) //时间戳, 精确到秒
private Date updated = null; //改记录最后更新时间

时间要加 @Temporal @JsonSerialize(用于告诉jackjson 怎么输出时间)
如果用的jackjson 各种关系 要加好 注解,免得 报错为 无限递归
@JsonIgnore
对于 子实体中引用的父实体加上面的,不然无限递归

WiterJsonString.java  extends JsonSerializer<Date>{
    @Override
public void serialize(Date arg0, JsonGenerator arg1, SerializerProvider arg2)
throws IOException, JsonProcessingException {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
arg1.writeString(df.format(arg0));
}
}



action层 要 让spring 自动 封装参数为实体对象:

比如:

@RequestMapping(method = RequestMethod.GET, value = "/listallbywhere")
public @ResponseBody ResultVo listAllByWhere(@ModelAttribute Classes obj){
ResultVo re = new ResultVo();
List<Classes> c = dao.getAll(Classes.class, ModelReflectTools.createNotNull(obj, true));
re.setData(c);
re.setSuccess(c != null);
re.setTotal((re.isSuccess()) ? c.size() : 0);
re.setMsg((re.isSuccess()) ? "操作成功" : "操作失败");
return re;
}
必须加下面:
/**********************                   Spring mvc 参数自动封装 的 一些蛋疼步骤           ******************************/
@InitBinder 
    public void initBinder(WebDataBinder binder) {  
        // 忽略字段绑定异常  
        // binder.setIgnoreInvalidFields(true);  
 
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd mm:dd:ss");  
        binder.registerCustomEditor(Date.class, "popened",  
                new CustomDateEditor(format, true));
        binder.registerCustomEditor(Date.class, "pclosed",  
                new CustomDateEditor(format, true));
        binder.registerCustomEditor(Date.class, "signend",  
                new CustomDateEditor(format, true));
        binder.registerCustomEditor(Date.class, "opened",  
                new CustomDateEditor(format, true));
        binder.registerCustomEditor(Date.class, "closed",  
                new CustomDateEditor(format, true));
        binder.registerCustomEditor(Date.class, "updated",  
                new CustomDateEditor(format, true));
        binder.registerCustomEditor(Date.class, "created",  
                new CustomDateEditor(format, true));
    }
你懂得.不解释.


如果你的dao的某个方法要 操作数据库, 必须加上
@Transactional注解
分享到:
评论

相关推荐

    spring mvc 项目

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。Spring 框架本身提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,而Spring MVC 则是Spring...

    最全最经典spring-mvc教程

    Spring MVC 是一款强大的Java Web开发...对于想要深入理解和使用Spring MVC的开发者来说,这是一份非常宝贵的资源。通过学习这个教程,你可以提高你的Web开发技能,更好地利用Spring MVC来构建高质量的Java Web应用。

    Spring MVC使用Demo

    不过,现代Spring MVC项目往往倾向于使用Java配置或Spring Boot的自动配置,减少了XML的使用。 在"Springmvc"这个压缩包中,可能包含了配置文件、控制器类、视图模板(可能是JSP或Thymeleaf文件)以及其他相关的源...

    SSM(spring+spring MVC+mybatis)开发学生信息后台管理系统

    SSM(spring+spring MVC+mybatis)开发学生信息后台管理系统,实现学生增删改查功能设计一个简单的学生信息管理系统,要求使用SSM框架技术整合实现,用户登录后能够通过Web页面添加、删除、修改和查询学生信息 ...

    spring mvc+spring+maven框架项目,纯净项目

    同时,由于这是一个纯净项目,没有预设特定的业务逻辑,因此非常适合初学者学习和实践Spring MVC、Spring和Maven的集成使用。通过这个项目,开发者能够深入理解这三个框架如何协同工作,从而提升开发效率和代码质量...

    spring mvc 封装list到后台 SpringMVC_Multi_Row

    标题“spring mvc 封装list到后台 SpringMVC_Multi_Row”涉及到的是Spring MVC框架中如何处理前端传入的包含多行数据的列表。在Web应用开发中,经常需要将用户在页面上填写的多行数据(如表格)一次性提交到后台进行...

    java spring mvc项目,通过URL地址传递对象参数给action.zip

    提供的`Spring MVC中如何传递对象参数 - @ 小浩 - 博客园.url`链接可能指向一篇详细的博客文章,介绍了更多关于使用`@ModelAttribute`和对象参数的实践技巧和注意事项。 总结来说,通过Spring MVC的`@...

    Spring MVC所需jar包

    8. **Dojo 或 jQuery**:如果在前端使用 JavaScript 框架,如 Dojo 或 jQuery,对应的库也需要包含在项目中,虽然这些不是 Spring MVC 的直接依赖,但它们能增强用户体验和交互效果。 9. **AOP 相关库**:如果使用...

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

    另外,Spring Boot的出现简化了Spring MVC的配置,通过自动配置和起步依赖,使得搭建Spring MVC项目变得更加简单。 除此之外,Spring MVC还支持数据绑定、验证、本地化、主题、异常处理等功能。例如,使用@...

    Spring MVC 基础实例源码01

    下面我们将详细探讨Spring MVC的一些关键知识点。 1. **MVC模式**:MVC(Model-View-Controller)是一种设计模式,将业务逻辑、数据和用户界面分离。在Spring MVC中,Model代表业务对象,View负责展示,Controller...

    spring mvc 4.0

    6. **数据绑定与验证**:Spring MVC提供了数据绑定和验证功能,允许将表单数据自动绑定到Java对象,并进行校验,简化了业务逻辑处理。 7. **视图解析**:Spring MVC 4.0支持多种视图技术,如JSP、FreeMarker、...

    Spring mvc5.0.3 所有jar包

    4. **ModelAndView对象**: 这是Spring MVC中用于封装模型数据和视图名的对象。在Controller方法中,可以返回一个ModelAndView对象,指定返回的视图和传递给视图的数据。 5. **视图解析**: Spring MVC支持多种视图...

    spring mvc+spring+hibernaate+bootstrap+maven通用后台部门员工管理系统.zip

    这是一个基于Java技术栈的通用后台管理系统,主要使用了Spring MVC、Spring、Hibernate、Bootstrap和Maven等技术。这些技术在IT行业中广泛应用于企业级Web应用开发,构建高效、可维护的系统。下面将分别详细解释这些...

    基于jpa+hibernate+spring+spring mvc注解方式项目

    **基于JPA+Hibernate+Spring+Spring MVC注解方式项目详解** 在现代Java Web开发中,Spring框架扮演了核心角色,而Spring MVC作为其MVC(Model-View-Controller)实现,提供了强大的Web应用程序构建能力。同时,JPA...

    Spring MVC 4.2.3

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...

    Spring MVC 教程快速入门 深入分析

    Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...

    spring mvc+mybatis封装

    通过以上封装,Spring MVC和MyBatis的集成可以实现灵活、高效的开发流程,降低了开发难度,使得项目更易于维护和扩展。在实际开发中,我们还需要考虑事务管理、安全性、性能优化等多个方面,以确保系统的稳定性和...

    spring、 spring mvc、 hibernate、 ehcache JavaWeb后台框架

    在JavaWeb开发中,Spring、Spring MVC、Hibernate和Ehcache是四个非常关键的框架,它们共同构建了一个高效、灵活的后台系统。下面将详细解释这些框架的核心功能、使用场景以及它们之间的协作关系。 首先,Spring...

    基于spring mvc、spring、hibernate、bootstrap、maen开发的企业级项目,导入即可运行

    这是一个基于Java技术栈开发的企业级项目,主要使用了Spring MVC、Spring、Hibernate、Bootstrap和Maven等关键组件。下面将详细解析这些技术及其在项目中的作用。 **Spring MVC**: Spring MVC是Spring框架的一个...

Global site tag (gtag.js) - Google Analytics