私はコードでのiBATISの注釈である@Select使用する場合:mybatis @Selectキーワードの静的ファクトリで@Selectコンパイル時にエラーが発生しますか?
@Select({"SELECT ", selectField, " FROM ", table, "WHERE finished = #{finished}"})
List<ToDo> listToDoByFinished(@Param("finished") Integer finished);
それは右動作してコンパイルすることができますが、私は、コードを変更すると、次のとおりです。
//FIXME
@Select({SELECT, selectField, FROM, table, WHERE, finished, EQUAL, "#{finished}"})
List<ToDo> listToDoByFinished(@Param("finished") Integer finished);
それはコンパイルすることはできませんが通って、エラー情報は次のとおりです。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project blog: Compilation failure
[ERROR] /home/freeze/my_project/lbfreeze-blog/src/main/java/me/freezehome/blog/dao/ToDoDAO.java:[32,54] 错误(error): 不兼容的类型(type mismatch): Integer无法转换为String(Interger cannot convert to String)
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
SqlFactory
で定義されたSQLキーワード:
package me.freezehome.blog.factory;
public class SqlFactory {
private SqlFactory(){}
public static final String SELECT = " SELECT ";
public static final String INSERT = " INSERT ";
public static final String UPDATE = " UPDATE ";
public static final String DELETE = " DELETE ";
public static final String WHERE = " WHERE ";
public static final String FROM = " FROM ";
public static final String AND = " AND ";
public static final String OR = " OR ";
public static final String IN = " IN ";
public static final String INTO = " INTO ";
public static final String VALUES = "VALUES";
public static final String EQUAL = " = ";
}
その他
package me.freezehome.blog.dao;
import me.freezehome.blog.driver.MyInLanguageDriver;
import me.freezehome.blog.model.ToDo;
import org.apache.ibatis.annotations.*;
import java.util.List;
import static me.freezehome.blog.config.StringConfig.strSeparator;
import static me.freezehome.blog.factory.SqlFactory.*;
public interface ToDoDAO {
String table = "todo";
String id = "id";
String title = "title";
String content = "content";
String finished = "finished";
String selectField = id + strSeparator + title + strSeparator + content + strSeparator + finished;
String insertField = title + strSeparator + content;
}
他の情報:
- MyBatisの3.4.1
- MyBatisのスプリング1.3.0
- スプリング4.3.3
- mavne 3.3.9
- Javaの "1.8.0_111" のJava(TM)SEランタイム環境(1.8.0_111-B14を構築) は、Java HotSpot(TM)64ビットサーバーVM(25.111-B14、混合モードを構築する)
はい、解決します大文字を使っていますが、分かりません。 –