Весенняя партия JDBCcurSoritemReader не может запросить данные из SQL DB, где в качестве JDBCTemplate можно получитьMySql

Форум по Mysql
Ответить
Anonymous
 Весенняя партия JDBCcurSoritemReader не может запросить данные из SQL DB, где в качестве JDBCTemplate можно получить

Сообщение Anonymous »

jdbccursoritemreader не в состоянии запросить данные из SQL DB, поэтому он не собирается использовать метод MapRow Rowmappper, и в консоли нет ошибки. Где, как jdbctemplate, способный получать данные из DB, используя тот же запрос
config class < /p>
@EnableBatchProcessing
@Configuration
public class config {

@Autowired
DataSource datasource;

@Bean
public Job job(JobRepository jobRepository, Step step) {
return new JobBuilder("employeeData", jobRepository)
.start(step)
.build();
}

@Bean
public Step step(JobRepository jobRepository, PlatformTransactionManager manager) throws Exception {
return new StepBuilder("data_import",jobRepository)
.chunk(100, manager)
.reader (readItemt)
// .processor (null)
.writer(writeItem()).build();
}

@Bean
public JdbcCursorItemReader readItem() throws Exception{
// JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
// List customerCredits = jdbcTemplate.query("SELECT * FROM testdb.employee",new EmpRowMapper());
// System.out.println("2nd value " +customerCredits.get(0).getEmpName());

JdbcCursorItemReader reader = new JdbcCursorItemReader();
ExecutionContext executionContext = new ExecutionContext();
reader.setDataSource(datasource);
reader.setRowMapper(new EmpRowMapper());
reader.setSql("SELECT * FROM testdb.employee");
reader.open(executionContext);
reader.setFetchSize(10);
System.out.println(reader.read());
System.out.println(datasource.getClass().getName());
com.zaxxer.hikari.HikariDataSource ds = (com.zaxxer.hikari.HikariDataSource) datasource;
System.out.print1n("JDBC URL:"+ ds.getJdbcUrl());
System.out.println("Username:" + ds.getUsername());
System.out.print1n("Username:" + ds.getPassword());
ds.setConnectionTestQuery("SELECT empid FROM testdb.employee;");
System.out.println("Username: " + ds.isRunning());
reader.close();
return reader;
}

//@Bean
//public JdbcCursorItemReader readItem() {
// return new JdbcCursorItemReaderBuilder()
// dataSource(datasource)
// .sql("SELECT * FROM testdb.employee")
// .rowMapper(new EmpRowMapper())
// .build();
//}

@Bean
public FlatFileItemWriter writeItem(){
FlatFileItemWriter writer = new FlatFileItemWriter();
writer.setResource(new FileSystemResource("Downloads/CSV File/output.csv"));
writer.setHeaderCallback(writer1 -> writer1.write("EmpId, EmpName,EmpRole,EmpSalary"));
DelimitedLineAggregator aggregator = new DelimitedLineAggregator();
aggregator.setDelimiter(",");
BeanWrapperFieldExtractor extractor = new BeanWrapperFieldExtractor();
extractor.setNames(new String[] {"empId", "empName", "empRole", "empSalary"});
aggregator.setFieldExtractor(extractor);
writer.setLineAggregator(aggregator);
System.out.println("Item writer");
return writer;
}
}
< /code>
Интерфейс репозитория < /p>


@Repository
public interface EmpRepository extends JpaRepository{

}
< /code>
closmapper class < /p>

@Component
public class EmpRowMapper implements RowMapper{

@Override
public EmpPojo mapRow(ResultSet rs, int rowNum) throws SQLException {
System.out.println("Mapping row: " + rs);
EmpPojo emp = new EmpPojo();
emp.setEmpId(rs.getInt("EmpId"));
emp.setEmpName(rs.getString("EmpName"));
emp.setEmpRole(rs.getString("EmpRole"))
emp.setEmpSalary(rs.getInt("EmpSalary"));
System.out.println("row: "+ rs.getString("EmpName"));
return emp;
}
}
< /code>
application.properties
spring.application.name employeeTest
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=idbc:mysq1://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql: true
spring.data.jdbc.repositories.enabled=false

spring.batch.jdbc.initialize-schema=always
server.port:8085
< /code>
Подключение к базе данных хорошо, проверено.
запрос правильный, проверяется в дБ. Метод

Подробнее здесь: https://stackoverflow.com/questions/796 ... here-as-jd
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»