Record型号能量车队
在从数据库中找寻出一行数据,这行数据会转换为Java对象,在Jooq中是相应的Record对象,其中数据库的列表名对应Record对象的属性名称。
-
查询出完整的一行会默认返回一个对应的Record,如
UserRecord
-
只查询出一行中的几个字段,则会返回抽象的Record带有数字,
Record2<Integer, String>
,而具体的Record,如UserRecord,能够通过getAttriName,来获取属性名,比较方便。其中可以将Record数据(如: Record2)转化为具体的Record(如: UserRecord)Record2<Integer, String> record = select... sentence. UserCardRecord res = record.into(USER_CARD);
-
其中Record通过intoMap方法能转化为Map,属性为key,内容值为value,而像
Record2<Integer,String>
这种散装的临时能量车转化为Map时,有装载(查询时)设置的字段名称决定,如:Record2<Integer, String> record = db().select(USER_CARD.CARD_ID,USER_CARD.CARD_NO)...something... Map<String, Object> intoMap = record.intoMap(); // {card_id=1, card_no=4892585300092512}
select count方法
stack overflow: how to write count query in jooq
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(0, int.class);
select 多个表的数据时
在select通过join需要查询多个数据时,返回的POJO,我们可以使用jooq的Record类,这样与我们的Vo类非常解耦,vo就可以只是当做json输出类,pojo就是查询数据的类。
stackoverflow:how-to-join-3-tables-and-iterate-results-using-jooq
Result<?> result = sql
.select()
.from(SCHEUDLE)
.leftOuterJoin(COURSE)
.on(SCHEDULE.CID.eq(COURSE.ID))
.leftOuterJoin(STUDENT)
.on(SCHEDULE.SID.eq(STUDENT.ID))
.fetch();
for (Record r : result) {
StudentRecord s = r.into(STUDENT);
CourseRecord c = r.into(COURSE);
}
在实际中的应用:
我们需要值查询出我们需要的数据,但是又不想新建一个pojo类,我们可以通过动态的方式,创建新的Record.
JOOQ提供了一个newRecord的方法,供我们使用
Field<?>[] fields = USER_SCORE.fields();
List<Field<?>> f = new ArrayList<>(Arrays.asList(fields));
f.add(USER.USERNAME);
f.add(USER.MOBILE);
Field<?>[] myFields = f.toArray(new Field<?>[0]);
Record myRecord = db().newRecord(myFields);
List<? extends Record> fetch = db().select(myFields)
.from(USER_SCORE.leftJoin(USER).on(USER_SCORE.USER_ID.eq(USER.USER_ID)).leftJoin(USER_TAG).on(USER_SCORE.USER_ID.eq(USER_TAG.USER_ID)))
.where(USER_SCORE.DESC.eq(VersionName.SUB_3_SIGN_SCORE))
.and(condition)
.orderBy(USER_SCORE.CREATE_TIME.desc())
.fetchInto(myRecord.getClass());
myRecord的数据现在为
+------+-------+------+------+-------+------------+-----------+--------+--------+-------+------+---------+-----------+-----------+-----------+----------+--------+----