现在我已经从ios转行为java了呦吼吼吼~~~

1.先来一张界面,项目的字段太多了,为了研究知识点我做了个潘长江版的

aaarticlea/png;base64,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" alt="" />

<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
<script type="text/javascript">
var i = 1;
function addRow(){
var br = document.createElement('br');
var text = document.createElement('input');
text.setAttribute("name", "educations[" + i++ + "].school");
text.setAttribute("type", "text"); document.getElementById("school").appendChild(br);
document.getElementById("school").appendChild(text);
}
</script>
</head>
<body> <form action="/success" method="post">
<table border="1">
<tr>
<td>姓名:</td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td>身份证号:</td>
<td><input type="text" name="idCard"/></td>
</tr>
<tr>
<td>教育经历:</td>
<td>
<div id="school">
<input type="text" name="education[0].school"/>
</div>
<input type="button" value="添加学校" onclick="addRow()"/>
</td>
</tr>
</table>
<input type="submit" value="提交"/>
</form> </body>
</html>

form

2.Person、Educa两个model

Person中@OneToMany括号中的cascade是级联,用来管理如何存储Person与Educa表

package com.example.model;

import java.util.ArrayList;
import java.util.List; import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany; @Entity
public class Person { @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
protected Long id; @Column
private String idCard;// 身份证号 @Column
private String name;// 姓名 @OneToMany(cascade = { CascadeType.ALL }, orphanRemoval = true)
@JoinColumn(name = "person_id")
private List<Educa> educations = new ArrayList<Educa>();// 教育经历 public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getIdCard() {
return idCard;
} public void setIdCard(String idCard) {
this.idCard = idCard;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Educa> getEducations() {
return educations;
} public void setEducations(List<Educa> educations) {
this.educations = educations;
} }

Person

package com.example.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne; @Entity
public class Educa { @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
protected Long id; @ManyToOne
@JoinColumn(name = "person_id")
private Person person;// 所属人物 @Column
private String school;// 学校 public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
} public String getSchool() {
return school;
} public void setSchool(String school) {
this.school = school;
} }

Educa

3.利用jpa的save方法

声明PersonRepository的时候一定要加注释,注意命名规范,要同名小写

package com.example.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.example.model.Person;

public interface PersonRepository extends JpaRepository<Person, Long> {

}

PersonRepository

package com.example.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.example.model.Person;
import com.example.repository.PersonRepository; @Service
public class PersonService { @Autowired
private PersonRepository personRepository; public void save(Person person) {
personRepository.save(person);
}
}

PersonService

4.controller

同样声明的时候要注意注释和命名规范

package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import com.example.model.Person;
import com.example.service.PersonService; @Controller
public class PersonController { @Autowired
private PersonService personService; @RequestMapping
public String form() {
return "form";
} @RequestMapping("/success")
public String submit(@ModelAttribute Person person) {
personService.save(person);
return "success";
} }

PersonController

5.完成!

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPYAAACZCAIAAACT0lAQAAAOlUlEQVR4nO2dzWsbZx7Hn//BSvQnWLYGpqBjm0K7gZzS+kV2IY4uIr3twTQdKU6gLShhIx8UskkdG9Ee2oaYLEtE1hJGdQ+pYjtODssuQpEsTIsbFtVWSXftpOAYtIdHM3rmmWdeJXv0zPw+6CBp3sTjzzz+zSPN90EtAPA0yO0PAABHCygOeBxQHPA4oDjgcdqKPwAAT3D69GldxY/1zAKAowEUBzyOueKn/Qq0ANeQfz5zxXt9XvEBtADXgOLmUC3w08/b3//w49/+/g949PPj+x9+/Onnbe2fjwQUb0O1wPYvO782f3f1EwHm/Nr8vf7Tf1qguBW0irv6cQCrgOJWAcU5BRS3CijOKd0o3oiLwXg6r91pPh2PxDIGR63lMggF8+WG4899/IDinNKl4iKpaS2XQShSM1O8Uc4HEWKeG/0MKM4p3Shei6BIjVhVMdtAcey3Pv3btYPinOJM8VqEElOMN1qNuMi2N5NrnwjYb6b9/d+1g+Kc4rwXV7rqWi4TFOPlcj4od+rMXjyfjiOE4ul8LZehluJFypmgQyMuBoNi3K1OHhTnFOeKZ2IRLCUWOhOLKOJqFVfK9FarVS6XCFnxP4SIsd2tVgsUB5zhWPFaRK6bM7FIPJ2OEN2w6YhKi6hq+rk4IQHFOcWh4o1yXux0w/Q1opni7VLe7DToL0BxTnGseOmMGAyK8VIug4uHWi6jN0pC9u5GoylWKxZ3AMU5patvN5UrSGobbS+eiUXwmmbjiaA40GN6oLjWcgOPQXHgmHGueKOcD6JgvtzAQ9rkkN/RKA4jKoATnF9uBvVHskFxoH9wpngjLgbVftPfd6ouIQmnza44oVABesxx/5gWanHgmIHfi1sFFOcUUNwqcO8mj8C9mzagWmB//49ffn0Jj/5/7O//of3zkYDibaAFuMaG4rZjEj0EtADXWFUcALgGFAc8jqVa3J9AC3CNjUJFu4ZPgBbgGlDcHKoFILaTiwfEdtrgAXz1wyHw1Y8NtIq7+nEAq4DiVgHFOaVnipMhE54EFOeUXilei5hn/bRa6kAVGWb8ZyMunumrH9aC4pzSm3s3rd/fQHb2ZMyn5naehiZOSBfl9DBIAaDWdAAozindKq53p5nO/Q1kZ9+Ii0FZd+Y/AXIFvZ2oF8iJF0wysQgo7kOOVXFSQSpiPJ+Oa3t9C+eJ7v61gOL+5DgLFfKOT0b9nYlFrN19bKR4F4WKye3PoDinHF8vjv1Tkj5ZGyqSdRIPFZWJPviIenFQ3JsceS9ey2Xi6byS05nJ1ViDKh2I61HVff5WFD9SQHFOOepevBZBwUyulE/HIzEpLgYzuVJcFGOxMxYKCSPF1SeSbnq/wblnF1CcU45W8ZicQZ6JxWqa9BV14IS2OnfSixvXKt0AinOKQ8UtZMya9MotujjWVbyW+zpfblhTXHcSue4BxTml979RwZeVZ2IxzXgfpbjxy/Y7UjqNk+WsKW7yJVE3HTwozim9VBwHHWKNWEPaKok1F516IXLkXBRdXW6a/YoGRlS8SW8Ux3UL6YeZ4rUIXcbQ4irJt/hl14prTyHGCqC49+hKcWUSTW35q/dzq0yuhh2lOlRKaGor44qf6SUO7VcNo3T3Q0hQnFO6utzUukWKxfrxYBBX1eTcbvrr9xegOKfALRFWAcU5BRS3Cty7ySNw76YNqBaA2E5eHhDbaRVoAa6xobjtsEQPAS3ANVYVBwCuAcUBj2OpFvcn0AJcY6NQ0a7hE6AFuAYUN4dqAYjt5OIBsZ02eABf/XAIfPVjA63irn4cwCqguFVAcU4Bxa0CinMKKG4VUJxTQHGrgOKcAopbBRTnFFDcKqA4p4DiVgHFOQUUtwoozimguFVAcU4Bxa0CinMKKG4VUJxTQHGrgOKcAopbBRTnFFDcKqA4p7iouN6cg30KKM4p3SqunukBY5oBK69XzgdNMma1AbauAYpzSi8Vb5TzohgvszJmLc4qQUXIEhOt6OXTkuG3Jvn5XeaDguKc4lhx2qd4Op+JRTK5msEEQBg8jYQmXJw+K/TjmJVNTBLKewsozik968VruUwklmF2t9ScVcwTAHfzzJmA5D130KlwaMV7O7UV3LvJIz24dxMrrvS45OQQ1EQRplMbk+cD8a+AFleOMNd28PSapv9P1NibJQJiO3l5OIzt1M7BgBAKivGvCat0ZrA3tKx9qpTJfwVKNYIPis8BZYIKwmmseMl4Vgn9Ssae4gBfOO/F1RUzLtDbWms7UdOLTqogkffQmXlZ88nJOVUYvbh6h1aHepgwW+DWrVvJZHLaWySTyVu3bjlrpb7FtuIsWYOx2Jl4+mtFI+2c86wRRt2lxvOIs2CUNMYTf9pC20bp2dmbN282Go1Db9FoNG7evJmenXXWUP2Jk148E4vICqq+xJFNZQySWFccF+6sEtyg8KCOqJ1mlvGRrKNtAUmSdnZ2Dg4O/uctDg4OdnZ2JEly1lD9iZNaXNaR/pISl+Bpls3WCxVKaM1khYzenRpkZI059ljx6enpw8NDt4U8Eg4PD6enp501VH/SzRf4nQFypfLOp+OsEQ97hYoeeopTQ4SsiWR7r/ibN2/+60XevHnjd8XVI4Aqbwwm47R7udlqtbSTdOopTjpNFFEt0w2V5XZHVLDiv3sRUJxE1TViv+WRctpyW724XKtYMpUoS1SjOtT+DYfJQfEOoDhJR3Fy3LrV6c47J4Cx4lR9T5weJhMo498OxNN5nS6fXdPbRU/xl/o8u3sNoZP312svX7689tFbrM/+1jN55ftfnD//xX2DvVGr1dbvnyQ2f3b32lsfXSNWrJ0X/vSMfL1+/6T8YUwBxVstourAPV8tl2HV38zBFhVE9WLve6Jjhqn4wcHBbyY8FRG6+t1T5fXVSZF8qbD4+dTU54tme1OtWV1dPIHEp7/99vS7q+Lk1erqarWzVnVKeJ86DF7NyiEODg5Acd+hp3jTDs8fLwrC1HPWIiwuueYJorfHi1KTovHFDELihryDKeH9jWaz2dxgbkMeSwso7kccKJ6aFMXJVLPZ3Pg2pWPkicXHzymbsX/PHy++P5mi7E9NiqlvN/QPuCEicUN9JojyTmwBivsRPcV3Dbn32bkT4XOV3d3d3d1K6d4JJD7Z3U1NiqlvnmjXPPfZPfwk9c2TSunee5MpahGG2ZcrR5F5IqIT4fB7T+RNxMmUdld6gOJ+hKn469evt6yyMTEUuLKwsrW1tbW1IiBhRb34q+TERPIr/OTKwsrG8lfvjl6hFjFZWbiCEJL3rOzt46Ghd1e2Vt4dmkgnJwR5V3hv5Esmr1+/BsV9h57idUsUBYSiiWy9XhSQUKzX1wvZAApkC+vKGtlENJrI4ieX7xTXC9lTI5epRVqyiShS76der9fr64lEIho6VazXi3cuCyMXoqEQXme9kA0g4c6dy3o7xIDifkRP8U1DinMzwsiFaCgwM1fEbwhIKMoLBYTk9zdnRgT8PCtFZ+aKa/nsqZEZvCgrRaNSFq9vysxcMStFZ+buRUOn5ANtZqWoMDKDjxKVssafeXNzExT3I84UV8Rdy2cDSChuFgUkSFI0KkkCCmTza8q5oLzEm7AUp1nLZ0Oh6Jrm/b9I0trmGqn45uZaNBS4IEmBzgkGircBxdswFX/16lXViNXx0DvL1Wq1Wr30YXj804VqdTmMwneXFkKh8btfXhoIja9Wq9VqdZl4funD8KUvl1eXFt758BLey8Kn4+OfLjD2vrQQkrcyOLSy8gAaWFjSWV3Nq1evQHHfoad4RZ/Sw/nBwbFSpVJ6OD+AwoVKpVIphFG4UCmNDQ4kbxeSH4THLs5XKoUwQsnbBbzR2ODg/MNS6eH8AFF+jF2cN9g/8+Bjg+8U2s8LYYQQChcqhTBCA7qbdADF/QhT8f39/bI+c5+Mjn4yJ79aGkYIITQwOPpIs9rw2QS1wqPc3NtnE6z9tN/B6lPvEzwaHXx7qfxodHAAoYG5XOeYj3JzAwgNyztnsr+/D4r7DgeK8wso7kf0FP+3FwHF/QhT8b29vX95kb29PVDcdzDv3dze3m42m//0Fs1mc3t72+/3bvoQbQvMzs7euHHjxYsXe97ixYsXN27cmIU78P0GswWuX78uSdJRhpq4gCRJ169fd6mZjwpQ3BxoAa4Bxc2BFuAaG4o/8DHQAlxjVXEA4BpQHPA4uoqfBgCvwFYcALyKSvE+idP2ZAA24BYdxfsnTtuTAdiAW3QU7584bU8GYANu0VF8up/itA89F4ANuIVK8f6J0/ZeriTgFrTibscCtwHFgV4BigMeh1bcOJe6tn5fEM7X2vnWJ6kUG2Z+tq3caw8HYANuoVLcNE67urooCFPVdr61sEgEXj/97qpefvbi51MWc689HIANuAWtuHHWMBEf/NcpgYoUbmdaa7OGGTmrOiHcHk4HBtzChuJNVUT88ylBWHzcEXXj25Qmtr2dh42hMuSNAcWBXkErbpxLXSndC4fP/XlSTH2zdC5Md9bqZOsnIkJUzHZqUrSSfu3JAGzALVSKm8ZpXxkVkCbrmhmKLSD0cTI5NDSxQeRkB4YmPh4VTNOvPRmADbgFrbh+JvV6NBS4kEiEQtH1+no0FGAW2QF56eU7xXq9fnlEwE/qnTc7S30VgA24Ba24cWgvKw6YTNTW0l5anJsJsHKE/ZMODLiFY8WVfGtV8LuSGN9xfG4G9+9E2DYoDhwfKsXN4rQ7iddEmvVyGIWX9bcYD+GQYavR114NwAbcglbcOJdaSbxOfhBO3r4dRmjs4sVwO1qbAodek7naAwgNzD80Db/2ZgA24BYqxY2zhhNnh3HideLssJJ7jd9UGD6bwPnWCA0vMfaB87AZIdyeTwcG3MKG4scJKA70Clpxt5Ov24DiQK9QKb7XN3Hae54LwAbcQnXvZp/EaTe9GIANuEVH8f6J0/ZkADbgFqoclT6J0/ZkADbgFpCGBXgcUBzwOKA44HFAccDj/B+wpWmC5meGEgAAAABJRU5ErkJggg==" alt="" />

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

点击提交:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK0AAACUCAIAAABuuD5xAAAC6klEQVR4nO3YvXHqWgCFUXVBGQ6oxwk9uAgSSnANJHTiRB3Qxb7BtiWBwGbm8uZdz6yVcRA/I306OtIQSIb/+w/wT9ABiQ4oHZDogNIBiQ6oX9nB+eO0GYbd/vTISx6hA5Jf2kEybofhcBwfe8nPlh2cdy+bYRiGYdi87M5JktN+Nwyb08d52ujwup3ezbzN5+eWW94Zn3/lse3H7dfo9vWwHNTBE00dnHcvm2lHnz9O78cxP3fQg7r92uXn/f79x/GbkZ32u1vbj9vFDD8e37/+iQ6e7LODe9fU7ztYv3vvU3fGp8N80cdkPB6G20dUB082zQedfq8P3vcdrK8R620W1gd7noQOr9thFWLrXMwTEx082bw++Nrpw/IU/LaDi0vJwnfjw8ry21brgM8p4eaiQQdPtL5f+FyX9dT8sYPHzvt5/FYfFzoxXH18atTR/Y/cvG+cD9h4PKxX+3+3PlhP8tfubHaxZuS55nXi27yLl3t83F7fRi5P1k4et9f598YvbzdeTh/n5Pz2+jZVM0054/EwTQCdEvrSc6Snm+eDxe37xU5crht2+9NqDXjvecC98fl5wHJ8+SvL7+9l4mrVooOn+6XPE3kyHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBiQ4oHZDogNIBSfIHqh96J9XiIooAAAAASUVORK5CYII=" alt="" />(这是一张截图啦~)

ps:如果修改页面中的角标再提交会在数据库插入若干条空的信息。所以表单需要在controller里处理一下。另外页面还可以用thymeleaf实现,看心情补充~~~~

spring实现一对多表单的保存的更多相关文章

  1. 关于Spring MVC中的表单标签库的使用

    普通的MVC设计模式中M代表模型层,V代表视图层,C代表控制器,SpringMVC是一个典型的MVC设置模式的框架,对于视图和控制器的优化很多,其中就有与控制器相结合的JSP的表单标签库. 我们先简单 ...

  2. 玩转spring boot——AOP与表单验证

    AOP在大多数的情况下的应用场景是:日志和验证.至于AOP的理论知识我就不做赘述.而AOP的通知类型有好几种,今天的例子我只选一个有代表意义的“环绕通知”来演示. 一.AOP入门 修改“pom.xml ...

  3. Spring Boot (一) 校验表单重复提交

    一.前言 在某些情况下,由于网速慢,用户操作有误(连续点击两下提交按钮),页面卡顿等原因,可能会出现表单数据重复提交造成数据库保存多条重复数据. 存在如上问题可以交给前端解决,判断多长时间内不能再次点 ...

  4. AppBox实战: 如何实现一对多表单的增删改查

      本篇通过完整示例介绍如何实现一对多关系表单的相应服务及视图. 一.准备数据结构   示例所采用的数据结构为"物资需求"一对多"物资清单",通过IDE的实体设 ...

  5. Spring MVC实现防止表单重复提交(转)

    Spring MVC拦截器+注解方式实现防止表单重复提交  

  6. Spring MVC 数据绑定和表单标签库

    数据绑定是将用户输入绑定到领域模型的一种特性.作用是将 POJO 对象的属性值与表单组件的内容绑定. 数据绑定的好处: 1. 类型总是为 String 的 HTTP 请求参数,可用于填充不同类型的对象 ...

  7. spring mvc:练习:表单验证(javaConfig配置和注解)

    使用Spring表单标签, 表单验证使用 JSR303 的验证注解,hibernate-validators,提供了使用MessageSource和访问静态资源(如CSS,JavaScript,图片) ...

  8. Spring MVC(十)--通过表单序列化传递参数

    通过表单序列化传递参数就是将表单数据转化成字符串传递到后台,序列化之后参数请求变成这种模式param1=value1&&param2=value2,下面用代码实现. 1.创建表单 &l ...

  9. Spring mvc之提交表单

    表单内容: <body> <form action="user/login"> <table> <tr> <td>用户名 ...

随机推荐

  1. spring-boot启动信息中non-fatal error

    java.lang.ClassNotFoundException: org.springframework.data.web.config.EnableSpringDataWebSupport缺少依赖 ...

  2. Evolutionary Computing: [reading notes]On the Life-Long Learning Capabilities of a NELLI*: A Hyper-Heuristic Optimisation System

    resource: On the Life-Long Learning Capabilities of a NELLI*: A Hyper-Heuristic Optimisation System ...

  3. TAP/TUN摘要

    TUN适用于IP帧.Tap适用于以太网帧.TAP摸拟一个以太网设备(以arp广播MAC识别),它操作第二层数据包如以太网数据帧.TUN模拟了网络层ip设备(以点对点的方式,使用ip标识),操作第三层数 ...

  4. Gamemaker Studio运行时弹出打开窗口导致无法启动的错误

    Desc 初次使用遇到一个问题,点击Run的时候并没有运行当前工程而是弹出一个打开窗体 Steam里面相同问题描述:Compile error 后续才得知是要选择data.win,但是这个文件根本就没 ...

  5. AxureRP8实战手册(基础31-40)

    AxureRP8实战手册(基础31-40) 本文目录 基础31.     切换元件库 第2章          页面设置 基础32.     设置页面居中 基础33.     设置页面背景(图片/颜色 ...

  6. css学习笔记 3

    css选择符: 通配选择符:* 类选择符:.className 标签选择符 后代选择符:例:p strong ,选择的是p标签内的所有strong标签. 子选择符:> ,只选择父标签内的直接子标 ...

  7. oracle笔记

    一.sql*plus常用命令 (1)connect 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper] 当特权用户连接时,必须带上as sysdba或是as sysoper ...

  8. 苹果MacBook Air安装win7

    同事的一台mba,说iOS不习惯,希望装一个win7系统.机器看上去很小巧精致,运行iOS速度飞快.试着点了下鼠标,没反应,翻过来看了下,有个电源开关.拨了一下,细小的指示灯闪了闪,应该加上电了.唉, ...

  9. Python 修饰符

    def hello(fn):    def wrapper():        print "hello"        fn()        print "goodb ...

  10. Jfreechart初案例--饼图

    1.action @Controller(value = "pieAction") @Scope("prototype") public class PieAc ...