1. Start a new Spring Boot project
Use start.spring.io to create a project with jooq
2. Add dependency
gradle:
implementation 'net.sf.sprtool:sprtool-jooq:1.1.0'
maven:
<dependency>
<groupId>net.sf.sprtool</groupId>
<artifactId>sprtool-jooq</artifactId>
<version>1.1.0</version>
</dependency>
3. Inject JooqTemplate
@Autowired
private JooqTemplate jt;
4. Use JooqTemplate
insert:
Map values=JooqMaps.toSnakeCase(someBean);
jt.insert("some_table",values);
update:
Map values=JooqMaps.toSnakeCase(someBean);
jt.updatev("some_table",values,"id",someBean.getId());
delete:
jt.deletev("some_table","id",idParam);
query single:
SomeBean someBean=jt.loadv("some_table",SomeBean.class,"id",id);
query multiple:
Final sql will not include "name" or "gender" when nameParam is null or genderParam is null.
The supported operators include: %,%L,%R,>,>=,==,<,<=,isnull,isnotnull,in,notin,between,notbetween,asc,ascnf,ascnl,desc,descnf,descnl.
Condition otherCondition=DSL...;
List<SomeBean> beanList=jt.queryv("some_table",SomeBean.class,"name%",nameParam,"gender",genderParam,"bidrthday:between",beignDate,endDate,otherCondition,"id:desc");
pagination query
List conditions=jt.conditions("id",idParam,"name%",nameParam,"birthday>=",birthDayParam,...);
LimitSelect limitSelect=new LimitSelect() {
public SelectOrderByStep from(SelectSelectStep select) {
return select.from(T("some_table")).where(conditions);
}
public List<OrderField> orderBy(){
return Arrays.asList(F("birthday").desc());
}
};
LimitResult result=jt.query(SomeBean.class,limitSelect,LimitRange.of(limitParam,offsetParam));