Mybatis注解sql時出現(xiàn)的一個錯誤及解決
一. 錯誤
在做Mybatis用注解方式來注入sql的練習(xí)時,報了這樣子的錯誤。
遇到錯誤很正常,然后我又從學(xué)了一遍今天剛剛學(xué)的內(nèi)容,溫故而知新嘛。
錯誤問題如下:


二. 文件結(jié)構(gòu)
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();
}
}然后我把BookMapper.xml的內(nèi)容都刪完了,沒有把文件刪掉,目錄如下:

Mybatis的配置文件
這個映射用包用類其實都沒有影響,因為我們做的是注解配置
<?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>三. 分析
從上面的文件看,我的問題很大部分原因應(yīng)該在這個mapper的包里面。然后就是看參數(shù)有沒有個數(shù)對齊,但是也不會導(dǎo)致這樣的錯誤說是錯誤解析SQL Mapper配置,所以這個問題我一開始糾結(jié)于那個BookMapperSQL .java的內(nèi)容是不是寫錯了,研究了一個多小時,直接重學(xué)了一遍,哭了。
后來我在想,會不會是因為我拿的是我之前做的作業(yè)修改的而出現(xiàn)的問題。然后我就看了我之前的文件目錄

我突然想起之前做這個動態(tài)代理方式實現(xiàn)的方式時,pom.xml文件做了配置,指定了mapper包中。

難道就是因為指定了位置,文件加載所以出問題了嗎?所以我就把這段代碼注釋掉
然后它就運行成功了。

當(dāng)熱,我們在使用注解方式注入sql時,mapper包中沒必要再加這個文件了,只能說是自己愚鈍了,上網(wǎng)查都沒有人像我一樣這么烏龍了。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決新版 Idea 中 SpringBoot 熱部署不生效的問題
這篇文章主要介紹了解決新版 Idea 中 SpringBoot 熱部署不生效的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
springboot定時任務(wù)SchedulingConfigurer異步多線程實現(xiàn)方式
這篇文章主要介紹了springboot定時任務(wù)SchedulingConfigurer異步多線程實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
Java基礎(chǔ)之Integer使用的注意事項及面試題
這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)之Integer使用注意事項及面試題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
在Spring Boot中實現(xiàn)多環(huán)境配置的方法
在SpringBoot中,實現(xiàn)多環(huán)境配置是一項重要且常用的功能,它允許開發(fā)者為不同的運行環(huán)境,這種方式簡化了環(huán)境切換的復(fù)雜度,提高了項目的可維護(hù)性和靈活性,本文給大家介紹在Spring Boot中實現(xiàn)多環(huán)境配置的方法,感興趣的朋友跟隨小編一起看看吧2024-09-09
Java編程Iterator迭代器設(shè)計原理及實現(xiàn)代碼示例
這篇文章主要介紹了Java編程Iterator迭代器設(shè)計原理及實現(xiàn)代碼示例,具有一定參考價值,需要的朋友可以了解下。2017-10-10
Springboot配置Swagger的實現(xiàn)示例
Swagger 是一種提高 API 開發(fā)和維護(hù)效率的工具,它使開發(fā)者能夠更輕松地構(gòu)建、測試和文檔化 API,本文主要介紹了Springboot配置Swagger的實現(xiàn)示例,感興趣的可以了解一下2023-10-10

