Если я попытаюсь сопоставить результат с аннотацией @ ResultType(ResultBean.class) все работает, но я не знаю, как сопоставить внутренний класс, поэтому пытаюсь сопоставить результат с помощью XML-сопоставителя.
У меня есть этот интерфейс:
Код: Выделить всё
public interface MyMapper {
@ResultMap("MyBean")
@Select("SELECT myData as myData FROM myTable")
public List getMappedData();
}
Код: Выделить всё
Код: Выделить всё
@SpringBootApplication
@EnableTransactionManagement
@MapperScan("myPackage")
@PropertySource(value = "classpath:application.properties")
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
@Value("${spring.datasource.jndi-name}")
private String jndiName;
@Bean
public DataSource dataSource() {
final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
DataSource dataSource = dsLookup.getDataSource(jndiName);
return dataSource;
}
@Bean
public DataSource jndiObjectFactoryBean() {
JndiObjectFactoryBean jofb = new JndiObjectFactoryBean();
jofb.setJndiName(jndiName);
return (DataSource) jofb.getObject();
}
@Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public ManagedTransactionFactory transactionFactory() {
return new ManagedTransactionFactory();
}
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage("beansPackage");
return sessionFactory;
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource());
return (SqlSessionFactory) sqlSessionFactory.getObject();
}
}
Код: Выделить всё
@Alias("MyBean")
public class MyBeanimplements Serializable {
private static final long serialVersionUID = 3143220123058683967L;
private String myData;
}
16:02:56,074 ОШИБКА
[org.springframework.boot.web.servlet.support .ErrorPageFilter]
(задача по умолчанию-1) Пересылка на страницу ошибки из запроса
[/MyPage/getData] из-за исключения [Не удалось найти карту результатов
myPackage.MyMapper.MyBean]: org.apache.ibatis.builder.IncompleteElementException: не удалось найти
карту результатов myPackage.MyMapper.MyBean
Мне не хватает какой-то конфигурации? Может быть, в файле application.property?
Подробнее здесь: https://stackoverflow.com/questions/541 ... result-map