基于mybatis查詢結(jié)果映射不到對(duì)象的處理
mybatis查詢結(jié)果映射不到對(duì)象
項(xiàng)目場(chǎng)景
使用mybatis+springboot 進(jìn)行數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢操作,一直拿不到返回結(jié)果。
問題描述
后端dao層(service層調(diào)mapper,方法的返回結(jié)果一直null)代碼一直空指針,
APP 中接收數(shù)據(jù)代碼:
//分類名稱 Integer blogCategoryId = blog.getBlogCategoryId();//這里有數(shù)據(jù) 22 BlogCategory category = blogCategoryMapper.getCategoryById(blogCategoryId);//這里返回結(jié)果就一直null blog.setBlogCategoryName(category.getCategoryName());//導(dǎo)致這里一調(diào)用方法就報(bào)空指針了。
原因分析
仔細(xì)檢查了代碼(debug),controller層+ service層沒問題,那問題坑定再dao層。檢查xml文件,但發(fā)現(xiàn)xml文件中查詢方法的sql代碼寫的沒問題:
<select id="getCategoryById" parameterType="java.lang.Integer" resultType="com.hhh.blog.entity.BlogCategory"> SELECT category_id, category_name, category_icon, category_rank, create_time, is_deleted FROM tb_blog_category WHERE category_id = #{blogCategoryId} </select>
這里理論上沒啥問題,但特么的就是數(shù)據(jù)庫(kù)的數(shù)據(jù)映射不到對(duì)象中(實(shí)體類都是按照數(shù)據(jù)庫(kù)數(shù)據(jù)對(duì)應(yīng)的,只多不少)。
解決方案
resultType=“com.hhh.blog.entity.BlogCategory”
返回結(jié)果改成使用映射:
<select id="getBlogCategoryPage" resultMap="getBlogCategoryPageMap"> <resultMap id="getBlogCategoryPageMap" type="com.hhh.blog.entity.BlogCategory"> <id column="category_id" jdbcType="INTEGER" property="categoryId" /> <result column="category_name" jdbcType="VARCHAR" property="categoryName" /> <result column="category_icon" jdbcType="VARCHAR" property="categoryIcon" /> <result column="category_rank" jdbcType="INTEGER" property="categoryRank" /> <result column="is_deleted" jdbcType="TINYINT" property="isDeleted" /> <result column="create_time" jdbcType="DATE" property="createTime" /> </resultMap>
開啟駝峰式命名匹配也可能解決上述問題。沒試過(guò)。建議自己搞起來(lái)
mybatis結(jié)果映射遇到的問題
錯(cuò)誤如下
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.executor.ExecutorException: No constructor found in POJO.User matching [java.lang.Integer, java.lang.String, java.lang.String, java.lang.String, java.lang.String]
### The error may exist in Mapper/UserMapper
### The error may involve test.selectUserById
### The error occurred while handling results
### SQL: SELECT * FROM USER WHERE id=?
### Cause: org.apache.ibatis.executor.ExecutorException: No constructor found in POJO.User matching [java.lang.Integer, java.lang.String, java.lang.String, java.lang.String, java.lang.String]
解決方案
最后,將User構(gòu)造器中int改為Integer即可、
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于java+springboot+mybatis+laiyu實(shí)現(xiàn)學(xué)科競(jìng)賽管理系統(tǒng)
這篇文章主要介紹了基于java+springboot+mybatis+laiyu實(shí)現(xiàn)的學(xué)科競(jìng)賽管理系統(tǒng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09詳解java CountDownLatch和CyclicBarrier在內(nèi)部實(shí)現(xiàn)和場(chǎng)景上的區(qū)別
這篇文章主要介紹了詳解java CountDownLatch和CyclicBarrier在內(nèi)部實(shí)現(xiàn)和場(chǎng)景上的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例
用Java創(chuàng)建文件或目錄非常簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01Java使用MessageFormat應(yīng)注意的問題
這篇文章主要介紹了Java使用MessageFormat應(yīng)注意的問題,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-06-06