1. Erro:
Ao fazer o exercício do Mybatis injetando sql com anotações, reportei tal erro.
É normal encontrar erros, e então aprendi o conteúdo que acabei de aprender hoje, revisando o antigo e aprendendo coisas novas.
A questão do erro é a seguinte:
2. Estrutura do arquivo:
BookMapper.java
public interface BookMapper {
@SelectProvider(type = BookMapperSQL.class,method = "bookSelectById")
Book bookSelectById(int id);
}
BookMapperSQL .java
public class BookMapperSQL {
public String bookSelectById(final int id){
return new SQL().
SELECT("*")
.FROM("t_user")
.WHERE("id=#{id}").toString();
}
}
Então eu deletei todo o conteúdo do BookMapper.xml sem deletar o arquivo. O diretório é o seguinte:
Arquivo de configuração do Mybatis
Esse mapeamento com pacote e classe não tem efeito, pois estamos fazendo configuração de anotação
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="Dd.properties"/>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases>
<package name="org.example.po"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper class="org.example.mapper.BookMapper"/>-->
<package name="org.example.mapper"/>
</mappers>
</configuration>
3. Análise:
Do arquivo acima, a maioria dos meus problemas deve estar no pacote do mapeador. Depois é ver se o número de parâmetros está alinhado, mas não vai causar tal erro.Diz-se que a configuração do SQL Mapper está analisada incorretamente , por isso fiquei enredado nesta questão a princípio se o conteúdo do BookMapperSQL. java estava escrito incorretamente, e eu estudei mais de um.Horas, eu reaprendi direto e chorei.
Mais tarde, me perguntei se o problema ocorreu porque peguei o dever de casa que fiz antes e o modifiquei. Então eu olhei para o meu diretório de arquivos anterior
De repente, lembrei que quando implementei esse método de proxy dinâmico antes, o arquivo pom.xml foi configurado e especificado no pacote do mapeador.
É por causa do local especificado e do carregamento do arquivo que há um problema? Então eu apenas comentei este código
, então ele é executado com sucesso.
Quando está quente, quando usamos anotações para injetar sql, não há necessidade de adicionar esse arquivo ao pacote do mapeador, só posso dizer que sou estúpido, e ninguém é tão vago quanto eu quando faço check-in online.