Badsqlgrammarexception во время тестирования уровня обслуживания, который использовал JDBCJAVA

Программисты JAVA общаются здесь
Anonymous
Badsqlgrammarexception во время тестирования уровня обслуживания, который использовал JDBC

Сообщение Anonymous »

Я пишу тестовый код, который дает мне ошибку Badsqlgrammarexception. Я использую шаблон jdbc. < /P>
ошибка - "org.springframework.jdbc.badsqlgrammarexception: ratementCallback; плохая грамматика SQL [select (id, имя, электронная почта, возраст) от клиента]" < /p>
Не было: org.postgresql.ut. Результат. < /P>
@Repository("jdbc")
public class CustomerJDBCDataAccessService implements CustomerDAO{
private final JdbcTemplate jdbcTemplate;
private final CustomerRowMapper customerRowMapper;

public CustomerJDBCDataAccessService(JdbcTemplate jdbcTemplate, CustomerRowMapper customerRowMapper) {
this.jdbcTemplate = jdbcTemplate;
this.customerRowMapper = customerRowMapper;
}

@Override
public List selectAllCustomers() {
var sql = """
SELECT (id, name, email,age) FROM customer
""";
return jdbcTemplate.query(sql , customerRowMapper);

}

// @Override
// public List selectAllCustomers() {
// var sql = """
// SELECT (id, name, email,age) FROM customer
// """;
//
// return jdbcTemplate.query(sql,((rs, rowNum) ->
// new Customer(
// rs.getInt("id"),
// rs.getString("name"),
// rs.getString("email"),
// rs.getInt("age")
// )));
// }

@Override
public Optional selectCustomerByID(Integer customerID) {
var sql = """
SELECT (id, name, email, age) FROM customer
where id = ?;
""";

return jdbcTemplate.query(sql,customerRowMapper,customerID)
.stream()
.findFirst();

}

@Override
public void insertCustomer(Customer customer) {
var sql = """
INSERT INTO customer (name, email, age)
VALUES(?,?,?)
""";
int result = jdbcTemplate.update(sql,customer.getName(),customer.getEmail(),customer.getAge());
System.out.println("jdbcTemplate.update = " + result);
}

@Override
public boolean existPersonWithEmail(String email) {
var sql = """
SELECT COUNT(id)
FROM customer
WHERE email = ?
""";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class,email);
return count != null && count>0;

}

@Override
public void deleteCustomerByID(Integer customerID) {
var sql = """
DELETE
FROM customer
WHERE id = ?
""";
Integer count = jdbcTemplate.update(sql, customerID);

}

@Override
public boolean existsCustomerWithID(Integer customerID) {
var sql = """
SELECT COUNT(id)
FROM customer
WHERE id = ?
""";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class, customerID);
return count !=null && count>0;
}

@Override
public void updateCustomer(Customer customer) {
if(customer.getName() != null){
String sql = "UPDATE customer SET name = ? WHERE id = ?";
int result = jdbcTemplate.update(sql, customer.getName(), customer.getId());
}
if(customer.getEmail() != null){
String sql = "UPDATE customer SET email = ? WHERE id = ?";
int result = jdbcTemplate.update(sql, customer.getEmail(), customer.getId());
}
if(customer.getAge() != null){
String sql = "UPDATE customer SET age = ? WHERE id = ?";
int result = jdbcTemplate.update(sql, customer.getAge(), customer.getId());
}
}
}

class CustomerJDBCDataAccessServiceTest extends AbstractTestContainersUnitTest {

private CustomerJDBCDataAccessService underTest;
private final CustomerRowMapper customerRowMapper = new CustomerRowMapper();

@BeforeEach
void setUp() {
underTest = new CustomerJDBCDataAccessService(
getJdbcTemplate(),
customerRowMapper
);
}

@Test
void selectAllCustomers() {
//GIVEN
Customer customer = new Customer(
faker.name().fullName(),
faker.internet().emailAddress()+"_"+ UUID.randomUUID() ,
20
);
underTest.insertCustomer(customer);
//WHEN
List customers = underTest.selectAllCustomers();
//THEN
assertThat(customers).isNotEmpty();
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... -used-jdbc

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