解決mybatis resultMap根據type找不到對應的包問題
mybatis resultMap根據type找不到對應的包
mybatis resultMap根據type找不到對應的包
當將包名替換為全路徑名時,程序又正常運行
這裡需要配置typeAliasesPackage 自動配置別名
以下是項目中原有的別名掃描,但是我新建的mapper文件夾不在此路徑下,沒有別名設置所以報錯。
typeAliasesPackage定義多個時,用逗號分隔
加上配置後別名啟用成功,程序正常運行
resultmap和resulttype的一些使用誤區
mybatis的映射配置文件中的兩個返回值類型resultmap和resulttype;
直接來測試代碼
<select id="getUser" parameterType="string" resultType="pojo.User"> select id,username,userpwd from t_users where id=#{id} </select>
這是正確的,resulttype在這裡是類的全類名,這樣執行沒有任何問題;
結果就是我們想要的。
接下來我們來定義一個<resultMap>
<resultMap id="user" type="pojo.User" > <id column="id" property="id" /> <result column="username" property="username" /> <result column="userpwd" property="userpwd" /> </resultMap>
然後我們修改一下上面的配置
<select id="getUser" parameterType="string" resultMap="user"> select id,username,userpwd from t_users where id=#{id} </select>
我們把resulttype改成resultmap然後取瞭<resultMap>中的id;運行結果也是正常的;跟上面打印的是一樣的;
接下來看一下他們之間的不同點
當看到這種錯誤的時候,就說明用的resulttype指定到<resultMap>中的id上去瞭;
<select id="getUser" parameterType="string" resultType="user" > select id,username,userpwd from t_users where id=#{id} </select>
想讓上面的配置起作用該怎麼改?那就是使用別名:在mybatis-config.xml中加入
<typeAliases> <typeAlias alias="user" type="pojo.User"/> </typeAliases>
這裡的alias就是resulttype的值;以上隻是我們書寫時容易註意不到的部分。
註意:mybatis返回的類型:那一定是map類型瞭,就是鍵值對的形式返回數據;但是我們使用resulttype時,會把map中的值取出來賦值給對象的屬性。
好瞭,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- mybatis映射和實際類型不一致的問題
- Mybatis中resultMap的Colum和property屬性詳解
- mybatis-puls中的resultMap數據映射
- mybatis使用resultMap獲取不到值的解決方案
- 解讀Mapper與Mapper.xml文件之間匹配的問題