I am currently trying to use jOOQ in my springboot project to insert certain data given by user from a html form into a MySQL db. This is my MainController responsible for getting data from the form and executing the query through a VisitorRepository: I'm using both add and insertVisitor methods but neither of them are working.
@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);
}
}
VisitorRepository interface:
public interface VisitorRepository {
public Phonenum add(Phonenum visitor);
public List<Phonenum> findAll();
public void insertVisitor(String phoneNumber, String submitTime, String name);
}
And the repository implementation:
@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;
}
I'm not entirely sure how to setup the config class but here is what I have:
@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;
}
So I get the System.out.println()
after the post request but when I look into my db there isn't anything inserted. Am I missing something? Any sort of help would be greatly appreciated :)
The problem was with Spring Security automatically enabling csrf Protection which I had to manual disable in the Security Config class using:
@Override
protected void configure(HttpSecurity http) throws Exception{
http.cors().and().csrf().disable();
}