DAO
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
如果您正在使用 jOOQ 的代码生成器,您可以配置它来生成 POJO 和 DAO。 然后 jOOQ 为每个 UpdatableRecord 生成一个 DAO,即每个具有单列主键的表。 生成的 DAO 实现了一个通用的 jOOQ 类型,称为 org.jooq.DAO。 此类型包含以下方法
// <R> corresponds to the DAO's related table
// <P> corresponds to the DAO's related generated POJO type
// <T> corresponds to the DAO's related table's primary key type.
// Note that multi-column primary keys are not yet supported by DAOs
public interface DAO<R extends TableRecord<R>, P, T> {
// These methods allow for inserting POJOs
void insert(P object) throws DataAccessException;
void insert(P... objects) throws DataAccessException;
void insert(Collection<P> objects) throws DataAccessException;
// These methods allow for updating POJOs based on their primary key
void update(P object) throws DataAccessException;
void update(P... objects) throws DataAccessException;
void update(Collection<P> objects) throws DataAccessException;
// These methods allow for deleting POJOs based on their primary key
void delete(P... objects) throws DataAccessException;
void delete(Collection<P> objects) throws DataAccessException;
void deleteById(T... ids) throws DataAccessException;
void deleteById(Collection<T> ids) throws DataAccessException;
// These methods allow for checking record existence
boolean exists(P object) throws DataAccessException;
boolean existsById(T id) throws DataAccessException;
long count() throws DataAccessException;
// These methods allow for retrieving POJOs by primary key or by some other field
List<P> findAll() throws DataAccessException;
P findById(T id) throws DataAccessException;
<Z> List<P> fetch(Field<Z> field, Z... values) throws DataAccessException;
<Z> P fetchOne(Field<Z> field, Z value) throws DataAccessException;
// These methods provide DAO meta-information
Table<R> getTable();
Class<P> getType();
}
除了这些基本方法之外,生成的 DAO 类还实现了各种有用的获取方法。 这里给出了一个不完整的示例,适用于 BOOK 表
// An example generated BookDao class
public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
// Columns with primary / unique keys produce fetchOne() methods
public Book fetchOneById(Integer value) { ... }
// Other columns produce fetch() methods, returning several records
public List<Book> fetchByAuthorId(Integer... values) { ... }
public List<Book> fetchByTitle(String... values) { ... }
}
请注意,您可以进一步对这些预生成的 DAO 类进行子类化,以向其中添加更多有用的 DAO 方法。 使用这样的 DAO 很简单
// Initialise an Configuration
Configuration configuration = new DefaultConfiguration().set(connection).set(SQLDialect.ORACLE);
// Initialise the DAO with the Configuration
BookDao bookDao = new BookDao(configuration);
// Start using the DAO
Book book = bookDao.findById(5);
// Modify and update the POJO
book.setTitle("1984");
book.setPublishedIn(1948);
bookDao.update(book);
// Delete it again
bookDao.delete(book);
反馈
您对此页面有任何反馈吗? 我们很乐意听到!