Java/SpringBoot Web 应用程序。插入具有自动递增 id 列的新行

我正在尝试使用 Web 应用程序上的一些输入行将新行存储到 SQL 表中。我的 jsp 具有我需要的所有输入行。但是,我需要存储新对象而不输入新 Id,因为它是自动递增的。我可以调用构造函数来存储除 id 之外的所有内容。到目前为止我该部分的代码是:


 @RequestMapping(value = "/save", method = RequestMethod.POST)

    public ModelAndView save

            //Index connect

            (@RequestParam("id") String id, @RequestParam("type") String animalType,

             @RequestParam("name") String animalName, @RequestParam("age") int animalAge){

        ModelAndView mv = new ModelAndView("redirect:/");

        AnimalConstruct newAnimal;


        newAnimal.setAnimalType(animalType);

        newAnimal.setAnimalName(animalName);

        newAnimal.setAnimalAge(animalAge);

        animals.save(newAnimal);

        mv.addObject("animalList", animals.findAll());

        return mv;

因此,如果我想存储“(id)11,(type)bird,(name)patty,(age)5”,并且我只将类型、名称和年龄设置为可输入,那么我应该对 id 做什么?我认为该对象在技术上将 id 注入为空,但随后我抛出了一个错误。我对 java 和 Springboot 都很陌生,并且在这两个方面的技能都非常薄弱。


波斯汪
浏览 108回答 3
3回答

交互式爱情

JPA 实现(例如 Hibernate)会带来神奇的效果。只需注释您的 id 字段,例如:@Id @GeneratedValue(strategy=GenerationType.AUTO) private int id;保存对象时,将自动生成并存储 id。检查一些类似的问题:Hibernate Auto Increment ID和How to autogenerateprimarykeyidproperly with Hibernateinsertingrecords

狐的传说

当您希望创建对象时,不应传递 ID。@RequestMapping(value = "/protected", method = RequestMethod.POST)public RouteDocument doPost(@RequestBody RouteDocument route) throws ControllerException {    createNewRoute(route);    return route;}在前面的示例中,createNewRoute 方法调用数据库,在我的例子中使用 spring JpaTemplate 来保存它。对象路由有一个由 JpaTemplate.save 填充的 ID 属性。因此,doPost 返回对象返回的对象与作为参数传递的对象相同,但具有自动分配的 ID。

holdtom

使用以下内容注释 bean 中的 id 列:@Id @GeneratedValue (strategy = GenerationType.IDENTITY) private long id;正如上面 @pedrohreis 所回答的,您也可以使用GenerationType.AUTO,但前提是您的唯一目的是使自动增量 id 那么我更喜欢GenerationType.IDENTITY另外,在您的项目中,如果您想禁用数据的批量更新,那么您应该使用GenerationType.IDENTITY.参考:休眠标识符
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java