Attribute "resultType" must be declared for element type "insert"或"update"


Attribute "resultType" must be declared for element type "insert"或"update"

今天寫代碼的時候,寫mybatis的update語句和insert語句,寫完之后,開jetty,但是很久過去,jetty卡卡住不動,

[logistics] 2016-02-01 16:40:54 577 main com.alibaba.druid.filter.logging.Log4jFilter.connectionLog(Log4jFilter.java:132)
[DEBUG] {conn-10010} setAutoCommit false
這個問題一般是xmL中有錯誤導致的,但是查看了很久,都沒與發現,知道jetty運行超時,報錯。看到報錯日志。如下圖:

insert報錯

這個報錯日志中說Attribute "resultType" must be declared for element type "insert",還有一個報錯信息是Attribute "resultType" must be declared for element type "update"

當時一直沒有找到那里有問題,一直以為問題是我寫insert和update語句是沒有寫resultType,后來發現,問題恰恰出在此處。

因為在insert和update語句中是沒有resultType的,報錯的信息不是說沒有寫resultType,而是說要在mybatis的文件中聲明resultType之后,才可以使用resultType.

在xml文件的開頭一般有兩行代碼:


  
  
  
           
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"

將http://mybatis.org/dtd/mybatis-3-mapper.dtd復制到瀏覽器中,會自動下載dtd文件,打開后,搜索update和insert和select,會發現之間的區別:

select的聲明如下:


ATTLIST select
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
parameterType CDATA #IMPLIED
resultMap CDATA #IMPLIED
resultType CDATA #IMPLIED
resultSetType (FORWARD_ONLY | SCROLL_INSENSITIVE | SCROLL_SENSITIVE) #IMPLIED
statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED
fetchSize CDATA #IMPLIED
timeout CDATA #IMPLIED
flushCache (true|false) #IMPLIED
useCache (true|false) #IMPLIED
databaseId CDATA #IMPLIED
lang CDATA #IMPLIED
resultOrdered (true|false) #IMPLIED
resultSets CDATA #IMPLIED 

insert的聲明如下:


ATTLIST insert
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
parameterType CDATA #IMPLIED
timeout CDATA #IMPLIED
flushCache (true|false) #IMPLIED
statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED
keyProperty CDATA #IMPLIED
useGeneratedKeys (true|false) #IMPLIED
keyColumn CDATA #IMPLIED
databaseId CDATA #IMPLIED
lang CDATA #IMPLIED

update的聲明如下:


ATTLIST update
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
parameterType CDATA #IMPLIED
timeout CDATA #IMPLIED
flushCache (true|false) #IMPLIED
statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED
keyProperty CDATA #IMPLIED
useGeneratedKeys (true|false) #IMPLIED
keyColumn CDATA #IMPLIED
databaseId CDATA #IMPLIED
lang CDATA #IMPLIED

可以看出select聲明中有resultType,而update和insert中沒有resultType
錯誤在此。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM