índice
Dois, propriedades de configuração
problema
O gerador usando mybatis torna-se automaticamente código de engenharia reversa, dao, modelo e arquivos xml de mapeamento. O seguinte erro foi relatado ao chamar a interface
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ccb.market.dao.UserMapper.selectByPrimaryKey
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:225) ~[mybatis-3.4.5.jar:3.4.5]
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48) ~[mybatis-3.4.5.jar:3.4.5]
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65) ~
análise
De acordo com o conteúdo do erro Instrução de limite inválida (não encontrada): com.ccb.market.dao.UserMapper.selectByPrimaryKey. O programa de análise preliminar não encontrou o arquivo de mapeamento xml correspondente ao executar para a camada dao. Qual foi a razão para não encontrá-lo? Pesquisa Wave. Conclui-se que o arquivo xml não é verificado durante a execução do programa, ou seja, há três motivos
1. Esse arquivo xml não existe no arquivo compilado
2. O arquivo da camada dao não corresponde ao nome do arquivo de mapeamento xml
3. O caminho não corresponde.
Finalmente, após algumas tentativas de localizar a seguinte configuração está faltando no application.protites. Esta configuração é muito importante, esta configuração é muito importante, esta configuração é muito importante
#指定mapper.xml的位置,如果mapper.xml和接口类在一个包下就不需要指定了
mybatis.mapper-locations=classpath:com/ccb/market/mapper/*.xml
Resumindo
O Springboot atende as duas condições a seguir, por sua vez, ao integrar mybatis;
Uma ou duas notas
1. Anote @SpringBootApplication
//配置要扫描的包目录
@SpringBootApplication(scanBasePackages = "com.ccb.market")
Equivalente a
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="com.ccb.market" />
2. Anote @MapperScan ("com.ccb.market.dao") // Configure o diretório para verificar a camada dao
//配置要扫描dao层的目录
@MapperScan("com.ccb.market.dao")
Equivalente a
<!-- myBatis文件 -->
<bean id="sqlSessionFactory" class="core.common.springmvc.PackagesSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:config/mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/ccb/market/mapper/*.xml" />
<property name="typeAliasesPackage" value="com.**.model" />
</bean>
Dois, propriedades de configuração
#指定mapper.xml的位置,如果mapper.xml和接口类在一个包下就不需要指定了
mybatis.mapper-locations=classpath:com/ccb/market/mapper/*.xml