[英]jOOQ Spring Boot compiling query but not inserting into db
我目前正在尝试在我的 springboot 项目中使用 jOOQ 将用户从 html 表单中提供的某些数据插入到 MySQL 数据库中。 这是我的 MainController 负责从表单获取数据并通过 VisitorRepository 执行查询:我同时使用 add 和 insertVisitor 方法,但它们都不起作用。
@Controller
public class MainController {
private final VisitorRepository visitorRepository;
@Autowired
public MainController (VisitorRepository visitorRepository) {
this.visitorRepository = visitorRepository;
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String main() {
return "main";
}
@ResponseBody
@PostMapping("/")
public Phonenum firstSubmit(Phonenum phonenum){
System.out.println(phonenum.getPhonenumber());
visitorRepository.insertVisitor(phonenum.getPhonenumber(),"now", phonenum.getName());
return visitorRepository.add(phonenum);
}
}
访问者资源库接口:
public interface VisitorRepository {
public Phonenum add(Phonenum visitor);
public List<Phonenum> findAll();
public void insertVisitor(String phoneNumber, String submitTime, String name);
}
和存储库实现:
@Repository
@Transactional
public class VisitorRepo implements VisitorRepository{
private final DSLContext dslContext;
public VisitorRepo(DSLContext dslContext){
this.dslContext = dslContext;
}
public void insertVisitor(String phoneNumber, String submitTime, String name){
this.dslContext
.insertInto(Phonenum.PHONENUM)
.columns(Phonenum.PHONENUM.PHONENUMBER, Phonenum.PHONENUM.SUBMITTIME, Phonenum.PHONENUM.NAME)
.values(phoneNumber, submitTime, name);
}
public com.demo.visitorlog.model.Phonenum add(com.demo.visitorlog.model.Phonenum visitor) {
this.dslContext
.insertInto(Phonenum.PHONENUM)
.columns(Phonenum.PHONENUM.PHONENUMBER, Phonenum.PHONENUM.SUBMITTIME, Phonenum.PHONENUM.NAME)
.values(visitor.getPhonenumber(), String.valueOf("submit time"), visitor.getName());
System.out.println("ran");
return visitor;
}
我不完全确定如何设置配置 class 但这是我所拥有的:
@Configuration
public class mainConfig{
@Autowired
private DataSource dataSource;
@Bean
public DataSourceConnectionProvider connectionProvider() {
return new DataSourceConnectionProvider
(new TransactionAwareDataSourceProxy(dataSource));
}
@Bean
public DefaultDSLContext dsl() {
return new DefaultDSLContext(configuration());
}
public DefaultConfiguration configuration() {
DefaultConfiguration jooqConfiguration = new DefaultConfiguration();
jooqConfiguration.set(connectionProvider());
return jooqConfiguration;
}
所以我在发布请求之后得到了System.out.println()
但是当我查看我的数据库时没有插入任何东西。 我错过了什么吗? 任何形式的帮助将不胜感激:)
您必须调用.execute()
来执行查询
this.dslContext
.insertInto(Phonenum.PHONENUM)
.columns(Phonenum.PHONENUM.PHONENUMBER, Phonenum.PHONENUM.SUBMITTIME, Phonenum.PHONENUM.NAME)
.values(visitor.getPhonenumber(), String.valueOf("submit time"), visitor.getName())
.execute();
问题在于 Spring 安全自动启用 csrf 保护,我必须在安全配置 class 中手动禁用:
@Override
protected void configure(HttpSecurity http) throws Exception{
http.cors().and().csrf().disable();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.