Java 如何将数据保存在一个页面中的多个sql行中

Java 如何将数据保存在一个页面中的多个sql行中,java,mysql,hibernate,spring-boot,Java,Mysql,Hibernate,Spring Boot,我对春靴还不熟悉。在我的thymeleaf页面中,我使用了for循环来生成标题,并且在每个标题下都有一个下拉列表。我需要将该标题和所选下拉列表项保存在一个sql行中。(例如:我使用for循环中的一周中的几天作为标题,用户可以在每个标题下选择一个主题,当用户选择主题并单击submit按钮时,应将5个sql行与day和subject一起保存),但目前它将所有日期和主题保存在1个sql行中 addTimeTableMapping-EleAF视图 <!DOCTYPE html> <ht

我对春靴还不熟悉。在我的thymeleaf页面中,我使用了for循环来生成标题,并且在每个标题下都有一个下拉列表。我需要将该标题和所选下拉列表项保存在一个sql行中。(例如:我使用for循环中的一周中的几天作为标题,用户可以在每个标题下选择一个主题,当用户选择主题并单击submit按钮时,应将5个sql行与day和subject一起保存),但目前它将所有日期和主题保存在1个sql行中 addTimeTableMapping-EleAF视图

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <link rel="stylesheet" type="text/css" href="static/css/timeTableMapping.css" th:href="@{/css/timeTableMapping.css}">
    <meta charset="UTF-8">
    <title>Time Table</title>
</head>
<body>



</form>
<div class="container2">
    <form action="#" th:action="@{/timeTableMapping/saveAll}" th:object="${timeTableMapping}" method="post">
        <table border="0" cell[adding="10">
            <tr>
                <td><h1>Time Table:</h1></td>
                <td>
                    <select th:field="*{time_table_code}">
                        <option value="">Choose..</option>
                        <option th:each="timeTable: ${timeTables}" th:value="${timeTable.name}" th:text="${timeTable.name}"/>
                    </select>
                </td>
            </tr>
        </table>

        <table border="1" >
            <thead>
            <tr>
            </tr>
            <br>

            <th:block th:each="day : ${days}">
                <th th:value="${day.name}" th:text="${day.name}"></th>
            </th:block>


            </thead>
            <tbody>




            <th:block th:each="day : ${days}">
                <td>
                    <select th:field="*{subject_code}">
                        <option value=""></option>
                        <option th:each="subject: ${subjects}" th:value="${subject.subject_code}" th:text="${subject.name}"/>
                        <td><input type="text"  th:value="${day.name}" name="day" style="display:none" /></td>

                    </select>
                </td>
            </th:block>


            <tr>
                <td colspan="2">
                    <button type="submit">Save</button>

                </td>
            </tr>

            </tbody>
        </table>
    </form>
</div>

</body>
</html>

时间表
时间表:
选择。。

拯救
时刻表绘图控制器

  @Controller
public class TimeTableMappingController {
    @Autowired
    private  TimeTableMappingDAO timeTableMappingDAO;

    @Autowired
    private TimeTableDAO timeTableDAO;

    @Autowired
    private SubjectDAO subjectDAO;

    @Autowired
    private StudentGroupDAO studentGroupDAO;

    @Autowired
    private DayDAO dayDAO;

    @Autowired
    private TimeDAO timeDAO;



    @RequestMapping("/timeTableMapping")
    public String viewHomePage(Model model){
        List<TimeTableMapping> timeTableMappingDetails= timeTableMappingDAO.findAll();
        model.addAttribute("timeTableMappingDetails",timeTableMappingDetails);
        return "timeTableMapping";
    }

    /*
    @RequestMapping ("/timeTableMapping/new")
    public String addTimeTableMapping(Model model) {
        TimeTableMappingDTO timeTablesForm = new TimeTableMappingDTO();
        for (int i = 1; i <= 3; i++) {
            timeTablesForm.addTimeTableMapping(new TimeTableMapping());
        }

        model.addAttribute("form", timeTablesForm);

        return "addTimeTableMapping";
    }
    */


    @RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST)
    public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){

        String[] dayArray = timeTableMapping.getDay().split(",");
        String[] subArray = timeTableMapping.getSubject_code().split(",");


        List<TimeTableMapping> tempList = new ArrayList<>();
        for(int i = 0 ; i < dayArray.length; i++) {
            TimeTableMapping tempTimeTable = new TimeTableMapping();
            tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());
            System.out.println(timeTableMapping.getTime_table_code());
            tempTimeTable.setDay(dayArray[i]);
            System.out.println(dayArray[i]);
            tempTimeTable.setSubject_code(subArray[i]);
            System.out.println(subArray[i]);
            tempTimeTable.setStart(timeTableMapping.getStart());
            tempTimeTable.setEnd(timeTableMapping.getEnd());
            tempList.add(tempTimeTable);
        }
        timeTableMappingDAO.saveAll(tempList);
        return  "redirect:/timeTableMapping";
    }


    @RequestMapping("/timeTableMapping/new")
    public String addTimeTableMapping(Model model){
        System.out.println("hey");
        System.out.println("hey");
        TimeTableMapping timeTableMapping =new TimeTableMapping();
        model.addAttribute("timeTableMapping",timeTableMapping);

        List<TimeTable> timeTableDetail = timeTableDAO.findAll();
        model.addAttribute("timeTables", timeTableDetail);

        List<Subject> subjectDetail = subjectDAO.findAll();
        model.addAttribute("subjects", subjectDetail);

        String[] days = new String[] { "Monday", "Tuesday"};

        List<Day> dayDetails = dayDAO.findAll();
        model.addAttribute("days",dayDetails);

        List<Time> timeDetails = timeDAO.findAll();
        model.addAttribute("times",timeDetails);

        return "addTimeTableMapping";
    }


/*

    @RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST)
    public void saveAll(List<TimeTableMapping> timeTableMappingList) { timeTableMappingDAO.saveAll(timeTableMappingList);}

    @RequestMapping(value="/timeTableMapping/save",method= RequestMethod.POST)
    public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){
        System.out.println("hello");
        System.out.println("hello");
        System.out.println("hello");
        System.out.println(timeTableMapping.getId());
        System.out.println(timeTableMapping.getDay());
        System.out.println(timeTableMapping.getStart());
        System.out.println(timeTableMapping.getEnd());
        System.out.println(timeTableMapping.getSubject_code());
        System.out.println(timeTableMapping.getTime_table_code());
        timeTableMappingDAO.save(timeTableMapping);
        return  "redirect:/timeTableMapping/new";
    }
@RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST) public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){

String[] dayArray = timeTableMapping.getDay().split(",");
String[] subArray = timeTableMapping.getSubject_code().split(",");


List<TimeTableMapping> tempList = new ArrayList<>();
for(int i = 0 ; i < dayArray.length; i++) {
    TimeTableMapping tempTimeTable = new TimeTableMapping();
    tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());
    tempTimeTable.setDay(dayArray[i]);
    tempTimeTable.setSubject_code(subArray[i]);
    tempTimeTable.setStart(timeTableMapping.getStart());
    tempTimeTable.setEnd(timeTableMapping.getEnd());
    tempList.add(tempTimeTable);
}
timeTableMappingDAO.saveAll(tempList);
    return  "redirect:/timeTableMapping";
}
    /*
    @RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST)
    public String saveAll(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){
        timeTableDAO.saveAll(timeTableMapping);
        return  "redirect:/timeTableMapping";
    }*/

    @RequestMapping("/timeTableMapping/edit/{id}")
    public ModelAndView updateTimeTable(@PathVariable(name="id")Long id){
        ModelAndView mav=new ModelAndView(("updateTimeTable"));

        TimeTable timeTable = timeTableDAO.findById(id);
        mav.addObject("timeTable",timeTable);

        List<Subject> subjectDetails = subjectDAO.findAll();
        mav.addObject("subjects", subjectDetails);

        List<StudentGroup> studentGroupDetails = studentGroupDAO.findAll();
        mav.addObject("studentGroups",studentGroupDetails);

        List<Day> dayDetails = dayDAO.findAll();
        mav.addObject("days",dayDetails);

        List<Time> timeDetails = timeDAO.findAll();
        mav.addObject("times",timeDetails);

        return  mav;
    }

    @RequestMapping("/timeTableMapping/delete/{id}")
    public String deleteProduct(@PathVariable(name="id") Long id){
        timeTableDAO.delete(id);
        return  "redirect:/timeTable";
    }
}
@控制器
公共类TimeTableMappingController{
@自动连线
私有TimeTableMappingDAO TimeTableMappingDAO;
@自动连线
私人时间表;
@自动连线
私人主体道主体道;
@自动连线
私人学生组学生组;
@自动连线
私家DayDAO DayDAO;
@自动连线
私人时间道时间道;
@请求映射(“/timeTableMapping”)
公共字符串视图主页(模型){
List timeTableMappingDetails=timeTableMappingDAO.findAll();
model.addAttribute(“timeTableMappingDetails”,timeTableMappingDetails);
返回“timeTableMapping”;
}
/*
@RequestMapping(“/timeTableMapping/new”)
公共字符串addTimeTableMapping(模型){
TimeTableMappingDTO timeTablesForm=新的TimeTableMappingDTO();

对于(int i=1;i您使用表单提交来保存复杂的数据,这比编写java脚本、将信息保存在javascript对象中并将json字符串发送到控制器以与列表一起保存要复杂得多

现在,通过您的实现,简单的黑客解决方案就是这样

1) 通过以下方式确保时间表的实施

@RequestMapping(value=“/timeTableMapping/saveAll”,method=RequestMethod.POST) 公共字符串savetimeline(@modeldattribute(“timeTableMapping”)timeTableMapping timeTableMapping){

String[]dayArray=timeTableMapping.getDay().split(“,”);
字符串[]子数组=timeTableMapping.getSubject_code().split(“,”);
List templast=new ArrayList();
对于(int i=0;i
嘿,我试过了。我认为它在某种程度上起到了作用,但在数据库中,它将所有日期和主题保存在同一行中。嘿,DB行结构已更新,我没有使用任何手动tableMapping类。使用auto Mapping是的,您一定创建了一个TimeTableMapping类。但是现在更新的implementa的问题在哪里你是指我在问题中提到的DAO类还是另一个?很好,但是记住这种方法很容易出错,所以你应该在客户端使用javascript或更复杂的带有多个表单的th标记来隔离数据。
@Repository
public interface TimeTableMappingRepository extends JpaRepository<TimeTableMapping, Long> {
}
String[] dayArray = timeTableMapping.getDay().split(",");
String[] subArray = timeTableMapping.getSubject_code().split(",");  


List<TimeTableMapping> tempList = new ArrayList<>();
for(int i = 0 ; i < dayArray.length; i++) {
    TimeTableMapping tempTimeTable = new TimeTableMapping();
    tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());        
    tempTimeTable.setDay(dayArray[i]);
    tempTimeTable.setSubject_code(subArray[i]);
    tempTimeTable.setStart(timeTableMapping.getStart());
    tempTimeTable.setEnd(timeTableMapping.getEnd());
    tempList.add(tempTimeTable);
}   
timeTableMappingDAO.saveAll(tempList);
    return  "redirect:/timeTableMapping";
}