我正在使用mybatis,下一个代码正在运行:
var container = new Container(x => {
x.For(typeof(IDataService<>)).Use(typeof(DataService<>));
// Override custom implementations of DataService<>
x.Scan(scanner => {
scan.AssemblyContainingType<IClientService>();
scan.AssemblyContainingType<ClientService>();
scan.Convention<AllInterfacesConvention>();
});
});
// This should now be of type ClientService
var service = container.GetInstance<IDataService<Client>>();
但我想尝试一下&#34;更好&#34;,所以我尝试了这个:
@Select(GET_USER_DATA)
@Results(value = {
@Result(property="webUserId",javaType=String.class,column="id_usuario_web"),
@Result(property="webUserType",javaType=String.class,column="tipo_usuario_web"),
@Result(property="webUserLastname",javaType=String.class,column="apellidos")
})
WebUser getUserData(@Param("login") final String login, @Param("password") final String password);
为此我在班上创建了这个枚举:
@Select(GET_USER_DATA)
@Results(value = {
@Result(WebUserTable.WEB_USER_ID.getResultObject()),
@Result(WebUserTable.WEB_USER_TYPE.getResultObject()),
@Result(WebUserTable.WEB_USER_LASTNAME.getResultObject())
})
WebUser getUserData(@Param("login") final String login, @Param("password") final String password);
但我在enum WebUserTable{
WEB_USER_ID("webUserId", Integer.class, "usuario_web_id"),
WEB_USER_TYPE("webUserType", String.class, "tipo_usuario_web"),
WEB_USER_LASTNAME("webUserLastname",String.class,"apellidos");
private Object result;
WebUserTable(final String _property, final Class _javaType, final String _column){
result = new Object(){
String property = _property;
Class javaType = _javaType;
String column = _column;
};
}
public final Object getResultObject() {
return result;
}
};
行中收到此错误This attribute value is undefined for the annotation type Result
。
答案 0 :(得分:0)
注释仅允许原始数据类型,字符串,类,枚举,另一个注释或此类数组。尽管WebUserTable是一个枚举,但要获得细节需要方法调用,注释不能这样做。
在某些方面,注释处理不仅仅是简单的替换,我经常使用C #defines来确保我不会太疯狂。
答案 1 :(得分:0)
Java中的注释是静态的(它们必须在编译时完全定义)。 因此,只能将原始类型,字符串,枚举和类添加为注释值。
在您的示例中,您在注释定义中调用public class Utils {
private SharedPreferences sharedPreferences;
public Utils (Context context) {
this.sharedPreferences = getPreferences(MODE_PRIVATE);
}
public String getPreferences(String key) {
sharedPreferences.getString(key, "UserName");
return userName;
}
}
方法。它被编译器拒绝,因为它没有在编译时定义。