最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis中BindingException異常的產(chǎn)生原因及解決過(guò)程

 更新時(shí)間:2023年06月01日 09:16:31   作者:一一哥Sun  
BindingException異常是MyBatis框架中自定義的異常,顧名思義指的是綁定出現(xiàn)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MyBatis報(bào)錯(cuò)BindingException異常的產(chǎn)生原因及解決過(guò)程,需要的朋友可以參考下

一. 問(wèn)題背景

今天我在講完MyBatis后,學(xué)生在進(jìn)行代碼練習(xí)時(shí)遇到了下面這樣的一個(gè)異常,先上圖:

二. 問(wèn)題分析

1.原因分析

首先我們看到,這里拋出的異常是org.apache.ibatis.binding.BindingException,接著再看異常的信息是 Invalid bound statement (not found): com.qf.mapper.EmpMapper.list?;谶@兩點(diǎn),我們大概能定位到是Mapper綁定產(chǎn)生的異常。

我們知道,在MyBatis中我們需要先定義一個(gè)Mapper接口,在接口中定義方法。然后再定義一個(gè)Mapper.xml,在XML文件中編寫(xiě)方法對(duì)應(yīng)的SQL語(yǔ)句,這也是java代碼和sql語(yǔ)句分離的體現(xiàn)。我們?cè)谡{(diào)用Mapper接口中的方式時(shí)MyBatis會(huì)給我們創(chuàng)建一個(gè)該接口的代理類(lèi),通過(guò)代理類(lèi)來(lái)調(diào)用Mapper接口中的方法。

現(xiàn)在有了代理就可以調(diào)用方法了,但是怎么找到這個(gè)方法對(duì)應(yīng)的SQL語(yǔ)句呢?此時(shí)就需要把Mapper接口和Mapper.xml進(jìn)行綁定,只有綁定了MyBatis才知道方法對(duì)應(yīng)的sql語(yǔ)句,我們通過(guò)代理調(diào)用方法時(shí)才能正常運(yùn)行sql語(yǔ)句。那么這個(gè)異常就是報(bào)的綁定異常,說(shuō)沒(méi)有找到com.qf.mapper.EmpMapper.list()對(duì)應(yīng)的sql語(yǔ)句。

那如何把它們兩個(gè)綁定呢?看下面代碼。

2.定義EmpMapper接口

package com.qf.mapper;
import com.qf.core.dao.BaseDao;
import com.qf.entity.Emp;
import org.omg.CORBA.INTERNAL;
 
public interface EmpMapper extends BaseDao<Emp> {
    public Emp selectById(Integer empno);
}

3.定義EmpMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qf.mapper.EmpMapper">
  <select id="list" resultType="emp">
    select * from t_emp
  </select>
</mapper>

在Mapper.xml中通過(guò)namespace屬性和接口綁定,這個(gè)屬性中設(shè)置的需要綁定的接口全類(lèi)名。這里設(shè)置的是com.qf.mapper.EmpMapper,就代表當(dāng)前EmpMapper.xml就和EmpMapper.java綁定了。然后在通過(guò)<select>標(biāo)簽中的id和接口中的方法名稱(chēng)保持一致,這樣就完成了方法和sql語(yǔ)句的綁定。這些操作都配置完成后MyBatis才能正常運(yùn)行,調(diào)用方法時(shí)才可以找到對(duì)應(yīng)的SQL語(yǔ)句。

4.問(wèn)題原因

現(xiàn)在知道MyBatis的綁定的過(guò)程了,我們繼續(xù)回到上面提到的異常。

通過(guò)檢查學(xué)生的代碼發(fā)現(xiàn),這個(gè)學(xué)員只是在Mapper接口中定義了方法,但是沒(méi)有在Mapper.xml中編寫(xiě)的sql語(yǔ)句,所以MyBatis找不到sql語(yǔ)句就拋出了上面的異常。

三. 異常解決

對(duì)于上面的異常,其實(shí)我們只需要在Mapper.xml中添加對(duì)應(yīng)的sql語(yǔ)句就可以解決。該學(xué)員的這個(gè)bug的原因是因?yàn)闆](méi)有寫(xiě)sql語(yǔ)句導(dǎo)致的。但是除了這個(gè)原因外,還有其他的場(chǎng)景也會(huì)導(dǎo)致出現(xiàn)這個(gè)bug,在這里都統(tǒng)一列出來(lái)方便大家學(xué)習(xí),常見(jiàn)原因如下。

1.Mapper.xml中的namespace屬性寫(xiě)錯(cuò)了

2.Mapper.java中的方法名稱(chēng)和Mapper.xml中標(biāo)簽id的屬性不一致

3.Mapper.java中定義了方法,但是沒(méi)有寫(xiě)Mapper.xml中對(duì)應(yīng)的slq語(yǔ)句

4.Mapepr.xml沒(méi)有給MyBatis注冊(cè)

5.Mapepr.xml中的id最好和方法名稱(chēng)保持一致,而且Mapper.java中的方法名稱(chēng)不要重載。方法中是可以重載的,但是Mapepr.xml中的id是不允許重復(fù)的。

四. 結(jié)語(yǔ)

現(xiàn)在你知道Mybatis的BindingException綁定異常是怎么產(chǎn)生,以及怎么解決的了嗎?

到此這篇關(guān)于Mybatis中BindingException異常的產(chǎn)生原因及解決過(guò)程的文章就介紹到這了,更多相關(guān)MyBatis BindingException異常解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java適配器模式應(yīng)用之電源適配器功能詳解

    Java適配器模式應(yīng)用之電源適配器功能詳解

    這篇文章主要介紹了Java適配器模式應(yīng)用之電源適配器功能,較為詳細(xì)的分析了適配器模式的概念、原理及Java基于適配器模式實(shí)現(xiàn)電源適配器功能的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-05-05
  • Maven多模塊之父子關(guān)系的創(chuàng)建

    Maven多模塊之父子關(guān)系的創(chuàng)建

    這篇文章主要介紹了Maven多模塊之父子關(guān)系的創(chuàng)建,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MyBatis框架與參數(shù)案例解析

    MyBatis框架與參數(shù)案例解析

    MyBatis是一款Java持久層框架,實(shí)現(xiàn)對(duì)象與數(shù)據(jù)庫(kù)的映射,文章介紹了MyBatis的基本概念,并給出了一個(gè)完整的使用案例,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • SpringBoot如何實(shí)現(xiàn)讀取.config文件

    SpringBoot如何實(shí)現(xiàn)讀取.config文件

    文章介紹如何在Java中讀取XML文件:通過(guò)創(chuàng)建XML數(shù)據(jù)源、定義POJO類(lèi)(含父類(lèi)Menudata和子類(lèi)Menudatas)、編寫(xiě)解析工具、實(shí)現(xiàn)Service層及Controller調(diào)用,最終使用Layui框架展示數(shù)據(jù),強(qiáng)調(diào)文件后綴轉(zhuǎn)換及層級(jí)結(jié)構(gòu)處理
    2025-08-08
  • sqlmap 使用教程(從入門(mén)到進(jìn)階)

    sqlmap 使用教程(從入門(mén)到進(jìn)階)

    sqlmap是一款強(qiáng)大的開(kāi)源 SQL 注入自動(dòng)化測(cè)試工具,支持識(shí)別并利用多種類(lèi)型的 SQL 注入漏洞(Boolean-based、Time-based、Error-based、Stacked Queries 等),本文給大家介紹sqlmap使用教程,感興趣的朋友一起看看吧
    2016-11-11
  • spring框架配置實(shí)體類(lèi)復(fù)雜屬性注入xml文件過(guò)程詳解

    spring框架配置實(shí)體類(lèi)復(fù)雜屬性注入xml文件過(guò)程詳解

    這篇文章主要介紹了spring框架配置實(shí)體類(lèi)復(fù)雜屬性注入xml文件過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java中把字符串轉(zhuǎn)成 double的方法

    java中把字符串轉(zhuǎn)成 double的方法

    Java 中可以使用 Double 類(lèi)中的靜態(tài)方法 parseDouble() 將一個(gè)字符串轉(zhuǎn)換為 double 類(lèi)型的數(shù)值,本文結(jié)合實(shí)例代碼對(duì)java字符串轉(zhuǎn)成 double詳細(xì)講解,需要的朋友參考下吧
    2023-08-08
  • SpringBoot入門(mén)教程詳解

    SpringBoot入門(mén)教程詳解

    SpringBoot?是由?Pivotal?團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化?Spring?應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。本文將詳細(xì)為大家講講SpringBoot是使用,需要的可以參考一下
    2022-06-06
  • SpringBoot調(diào)用DeepSeek?API的完整操作指南

    SpringBoot調(diào)用DeepSeek?API的完整操作指南

    這篇文章主要為大家詳細(xì)介紹了SpringBoot調(diào)用DeepSeek?API的完整操作指南,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • idea中如何去掉不想commit的文件

    idea中如何去掉不想commit的文件

    這篇文章主要介紹了idea中如何去掉不想commit的文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論

仙游县| 凤山市| 北流市| 怀柔区| 沁阳市| 梁山县| 安远县| 蒙自县| 日喀则市| 宣化县| 佳木斯市| 北安市| 扬州市| 建湖县| 泾源县| 永昌县| 修水县| 仙居县| 普兰县| 邹平县| 吉林市| 定边县| 来凤县| 多伦县| 丰原市| 界首市| 聂荣县| 厦门市| 吴忠市| 江都市| 保康县| 措勤县| 甘孜| 土默特右旗| 错那县| 鹤岗市| 团风县| 仁布县| 三原县| 大名县| 化隆|