Я пытаюсь изучить JDBI с dropwizard, мой код custome выглядит следующим образом.Использовать обычай, когда условие с dropwizard JDBI
public interface UserDao {
@SqlQuery("SELECT FROM `t_user` :cond")
@Mapper(UserMapper.class)
List<User> fetch(@Bind("cond") String cond);
}
и пытается позвонить с ниже код
Application.getJdbi().onDemand(UserDao.class).fetch("where logon_id="+p.getEmail()+"'");
и получение ниже выпуска
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `t_user` 'where [email protected]\''' at line 1
Я получаю вопросы котировки, как это было принято в качестве String. Таким образом, я пытаюсь достичь общего, где код предложения для всех запросов. Мои вопросы: 1. Как решить эту проблему. 2. Является ли это правильным способом кодирования такого типа, или мы можем использовать подготовленный оператор. Если да, то как.
Большое спасибо заранее :)
Пробовал и получаю ошибку org.skife. jdbi.v2.exceptions.UnableToExecuteStatementException: Невозможно выполнить, ни один именованный параметр не соответствует «cond», и не установлен позиционный параметр для места 0 (который равен 1 в схеме JDBC «Начало на схеме 1»). [statement: "SELECT FROM' t_user': cond ", расположенный:" SELECT FROM 't_user': cond", переписан: "/ * UserDao.fetch */SELECT FROM' t_user'? ", arguments: {positional: {} , называется: {}, видоискатель: []}] –
'@ UseStringTemplate3StatementLocator общедоступный интерфейс UserDao { @SqlQuery (" SELECT * FROM t_user ") @Mapper (UserMapper.class) Список выборки (@Define (" cond ") String cond); } ' –