Search code examples
javamysqlspringspring-bootjooq

jOOQ Spring Boot compiling query but not inserting into db


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 :)


Solution

  • 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();
        }