Mysql 在springboot上编写查询

Mysql 在springboot上编写查询,mysql,hibernate,spring-boot,spring-data-jpa,Mysql,Hibernate,Spring Boot,Spring Data Jpa,由于某些特定的目的,我必须在springboot上编写一个查询,但我尝试使用传递的值编写查询,但它会产生大量错误,我确信这不是正确的方法。我查阅了@Query的Jpa和springboot文档,但没有发现任何有用的东西。那么如何编写这种类型的查询呢 @Query("INSERT into LaganikartaDetails(?1)values(?2)") void setValuesExcel(String headingValues, String fieldValues); 除了使用插入

由于某些特定的目的,我必须在springboot上编写一个查询,但我尝试使用传递的值编写查询,但它会产生大量错误,我确信这不是正确的方法。我查阅了@Query的Jpa和springboot文档,但没有发现任何有用的东西。那么如何编写这种类型的查询呢

@Query("INSERT into LaganikartaDetails(?1)values(?2)")
void setValuesExcel(String headingValues, String fieldValues);

除了使用插入方法外,还可以使用存储库保存方法。它将自动保存您试图使用存储库方法保存的任何对象。这里我将分享一段代码片段,用于模拟插入数据库

@Autowired
DriverRepository driverRepo;

@RequestMapping(value="/driverSubmit", method=RequestMethod.POST)
public ModelAndView driverSubmit(@ModelAttribute Driver driver) 
    {
        driverRepo.save(driver);
        return new ModelAndView("redirect:/driverHome");  
    }

这里driverRepo是在这里自动连接的存储库对象。您提到了调用.save方法的对象数据。这是spring数据JPA存储库方法。您不需要使用插入查询。

您可以使用此查询手动插入:

Referring this, https://docs.spring.io/spring-data/jpa/docs/1.5.0.RELEASE/reference/html/jpa.repositories.html

@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname);

try 
@Query("INSERT into LaganikartaDetails =?1 values=?2")
void setValuesExcel(String headingValues, String fieldValues);
@Query("INSERT into LaganikartaDetails =? values=?")
void setValuesExcel(String headingValues, String fieldValues);

如果需要在实体中持久化的字段是动态的,则可以创建映射器类来检查输入属性是否为null或空,然后在实体中设置它。最后,您可以调用entity.save()

例如:

员工具有姓名、工资、年龄、联系电话等属性 你可以这样写
if(StringUtils.isNotBlank(name){employee.setName(name);}


类似地,对于其他字段,在最后对所有字段执行此操作后,您可以调用employee.save()

@Patrick。请仔细查看问题。我已经阅读了该文档。我正在尝试通过参数发送查询中的字段名和值。问题相当于“您为什么要编写这种类型的查询?”?因为在我看来,这既是使用数据库的错误方式(不是逐字段插入,而是逐行插入),也是使用Hibernate的错误方式(不使用SQL处理插入,而是使用EntityManager#persist之类的工具)@Tobb我正在编写这种类型的查询,因为在我的程序中,不确定哪个字段名会出现,所以我不得不这样做。如果您知道任何替代方案,请提出建议。也许可以解释一下您试图解决的问题的更广泛意义,因为通过
@Query
进行插入似乎非常奇怪。