Jooq - рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП "LINQ", рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд SQL рдХреНрд╡реЗрд░реА рдмрд┐рд▓реНрдбрд░

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, JDBC рдФрд░ ORM рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдп рдореИрджрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ , рдореИрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдУрдкрди рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( рдЕрдкрд╛рдЪреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд╛рдЗрд╕реЗрдВрд╕ ) рдХреЗ рд╕рд╛рде рдЖрдпрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк SQL рдХреЛрдб рдХреЛ рд╕реАрдзреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдХрд╛рдлреА рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЬреВрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреВрдХ рдореЗрдВ рдПрдХ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рдХреЛрдб рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:

Integer taskId = sqlFactory.select(ID).from(TASK).where(STATUS.equal(TaskStatus.QUEUED)). orderBy(LAST_UPDATED).limit(1).fetchOne(ID); 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдХреНрд╡реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓реЗрддрд╛ рд╣реИред Jooq рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛:



рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ?



рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдХреНрдпрд╛ рдХрд╕реВрд░ рд╣реИ?



 Integer taskId = sqlFactory.select(Task.ID).from(Task.TASK).where(Task.STATUS.equal(TaskStatus.QUEUED)). orderBy(Task.LAST_UPDATED).limit(1).fetchOne(Task.ID); 



рдЖрддреНрдореАрдпрддрд╛



 Field<Integer> jobTypeCountField = Job.JOBTYPE_ID.count().as("JOBTYPE_ID_COUNT"); Result<Record> jobTypeCountRecord = null; jobTypeCountRecord = sqlFactory.select(Job.JOBTYPE_ID, jobTypeCountField).from(Job.JOB) .where(Job.STATUS.equal(JobStatus.EXECUTING)).groupBy(Job.JOBTYPE_ID).fetch(); for (Record record : jobTypeCountRecord) { System.out.println(record.getValue(Job.JOBTYPE_ID) + " - " - record.getValue(jobTypeCountField)); } 


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд░рд╛рдп рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕рд╛ рдХреЛрдб рдХрд┐рд╕реА рдХреЛ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ред


рдЬреМрдХ рдПрдирд╛рд▓реЙрдЧреНрд╕




рдЕрдзрд┐рдХ рдПрдирд╛рд▓реЙрдЧ, рдереЛрдбрд╝реА рдЕрд▓рдЧ рдпреЛрдЬрдирд╛




рд╕рдВрдкрд░реНрдХ рд╡рд┐рд╡рд░рдг:




рдЬреВрдХ рд╕реНрд░реЛрдд рд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг (MySQL рдореЗрдВ info_schema рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛)



рд╢рд╛рдпрдж Geshi рд╕реЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

  select(KeyColumnUsage.CONSTRAINT_NAME, KeyColumnUsage.TABLE_NAME, KeyColumnUsage.COLUMN_NAME) .from(KEY_COLUMN_USAGE).join(TABLE_CONSTRAINTS) .on(KeyColumnUsage.TABLE_SCHEMA.equal(TableConstraints.TABLE_SCHEMA)) .and(KeyColumnUsage.TABLE_NAME.equal(TableConstraints.TABLE_NAME)) .and(KeyColumnUsage.CONSTRAINT_NAME.equal(TableConstraints.CONSTRAINT_NAME)) .where(TableConstraints.CONSTRAINT_TYPE.equal(constraintType)) .and(KeyColumnUsage.TABLE_SCHEMA.equal(getSchemaName())) .orderBy(KeyColumnUsage.TABLE_NAME.ascending(), KeyColumnUsage.ORDINAL_POSITION.ascending()).fetch() 


  for (Record record : create().select( ReferentialConstraints.CONSTRAINT_NAME, ReferentialConstraints.TABLE_NAME, ReferentialConstraints.REFERENCED_TABLE_NAME, ReferentialConstraints.UNIQUE_CONSTRAINT_NAME, KeyColumnUsage.COLUMN_NAME) .from(REFERENTIAL_CONSTRAINTS) .join(KEY_COLUMN_USAGE) .on(ReferentialConstraints.CONSTRAINT_SCHEMA.equal(KeyColumnUsage.CONSTRAINT_SCHEMA)) .and(ReferentialConstraints.CONSTRAINT_NAME.equal(KeyColumnUsage.CONSTRAINT_NAME)) .where(ReferentialConstraints.CONSTRAINT_SCHEMA.equal(getSchemaName())) .orderBy( KeyColumnUsage.CONSTRAINT_NAME.ascending(), KeyColumnUsage.ORDINAL_POSITION.ascending()) .fetch()) { String foreignKey = record.getValue(ReferentialConstraints.CONSTRAINT_NAME); String foreignKeyColumn = record.getValue(KeyColumnUsage.COLUMN_NAME); String foreignKeyTableName = record.getValue(ReferentialConstraints.TABLE_NAME); String referencedKey = record.getValue(ReferentialConstraints.UNIQUE_CONSTRAINT_NAME); String referencedTableName = record.getValue(ReferentialConstraints.REFERENCED_TABLE_NAME); TableDefinition foreignKeyTable = getTable(foreignKeyTableName); if (foreignKeyTable != null) { ColumnDefinition column = foreignKeyTable.getColumn(foreignKeyColumn); String key = getKeyName(referencedTableName, referencedKey); relations.addForeignKey(foreignKey, key, column); } } 

Source: https://habr.com/ru/post/In117974/


All Articles