Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在mysql数据库中保存选定的for循环数据?_Java_Hibernate_Spring Boot_Thymeleaf - Fatal编程技术网

Java 如何在mysql数据库中保存选定的for循环数据?

Java 如何在mysql数据库中保存选定的for循环数据?,java,hibernate,spring-boot,thymeleaf,Java,Hibernate,Spring Boot,Thymeleaf,我刚接触spring boot,有一段时间遇到了问题。在我的my thymeleaf页面中,我使用了for循环,我需要在数据库中保存当前正在迭代的项目。例如:我在for循环中使用一周中的几天,用户可以在我的for loo中为每个项目选择一个主题,然后应保存5个sql行,其中包含日期和主题,但当前它不保存日期,并在1个sql行中保存2个选定的主题 将时间表添加到AF视图中 <!DOCTYPE html> <html xmlns:th="https://www.thymeleaf.

我刚接触spring boot,有一段时间遇到了问题。在我的my thymeleaf页面中,我使用了for循环,我需要在数据库中保存当前正在迭代的项目。例如:我在for循环中使用一周中的几天,用户可以在我的for loo中为每个项目选择一个主题,然后应保存5个sql行,其中包含日期和主题,但当前它不保存日期,并在1个sql行中保存2个选定的主题

将时间表添加到AF视图中

<!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/save}" 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}"/>

                            </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;



    @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){
        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);

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

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

        return "addTimeTableMapping";
    }

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

        timeTableMappingDAO.save(timeTableMapping);
        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";
    }
}
添加时间表DAO

@Service
public class TimeTableMappingDAO {

    @Autowired
    TimeTableRepository timeTableRepository;

    @Autowired
    TimeTableMappingRepository timeTableMappingRepository;

    //to save a time table
    public TimeTableMapping save(TimeTableMapping timeTableMapping){
        return timeTableMappingRepository.save(timeTableMapping);
    }

    //@Override
    public void saveAll(List<TimeTableMapping> timeTableMapping) {

        List<TimeTableMapping> timetable=new ArrayList<>();
        timeTableMappingRepository.saveAll(timetable).forEach(timeTableMapping::add);   // TimeTable repository
    }
/*
    public TimeTableMapping saveAll(TimeTableMapping timeTableMapping){
        return timeTableMappingRepository.saveAll(timeTableMapping);
    }

*/
    //to search all 
    public List<TimeTableMapping> findAll(){
        return timeTableMappingRepository.findAll();
    }

    //get  by id
    public TimeTableMapping findById(Long id){
        return timeTableMappingRepository.findById(id).orElse(null);
    }


    //delete 
    public void delete(Long id){
        timeTableMappingRepository.deleteById(id);
    }


}
时间表映射存储库

  @Repository
public interface TimeTableMappingRepository extends JpaRepository<TimeTableMapping, Long> {
}

您正在获取多个数据。所以您应该使用列表时间表映射

在您的服务实现中,您可以传递您获得的列表并保存所有

@Override
public void saveAll(List<TimeTableMapping> timeTableMapping) {

    List<TimeTableMapping> timetable=new ArrayList<>();
    repository.saveAll(timetable).forEach(timeTableMapping::add);   // TimeTable repository
}

在DAO中自动连接TimeTableMappingRepository之前,应该在接口TimeTableMappingRepository上添加@Repository

就这样

@存储库 公共接口TimeTableMappingRepository扩展了JpaRepository{}


通过在接口上添加@Repository,spring data jpa将在运行时创建此接口的代理对象,您将能够自动连接它。

非常感谢您,但当我在服务类中使用它时,它显示了错误错误:27,5 java:method不重写或实现来自SuperTypes的方法听起来不错,因为您是一个初学者,所以您应该知道存储库在SpringBoot中是如何工作的。我建议您在spring boot和jpa存储库中获得更多知识。你看,,找到更多的教程thx我会看很多。顺便说一句,你能提出一个解决这个问题的方法吗。我更新了我看过那篇文章的问题,它真的很有帮助,我读了一些关于JPARepository中saveAll方法的文章,我仍然不清楚。thx指出。我以前忘了添加它。但是仍然是错误Occurs为什么您在这个方法上添加了@Override public void saveAllList TimeTableMapping请删除它,因为您没有任何父类持有提到的方法。我已经删除了它,但是使用saveAll对我来说不是很清楚。您已经注释了原始的saveAll,它是正确的,并且public void saveAllTimeTableMappingtimeTableMapping{return timeTableMappingRepository.saveAlltimeTableMapping;}