場景描述
在使用ssm框架寫項目的時候,在構(gòu)建mybatis中發(fā)現(xiàn)報錯;
報錯內(nèi)容(如下):
Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'singerName' from result set. Cause: java.sql.SQLDataException: Cannot convert string '周杰倫' to java.sql.Time value
項目中的實體類:
public class music{
? ? private Integer MucId;
private String MucName;
private String singerName;
private Time MucTime;
private String MucPath;
private String MucImg;
? ? public Integer getMucId() {
return MucId;
}
public void setMucId(Integer mucId) {
MucId = mucId;
}
public String getMucName() {
return MucName;
}
public void setMucName(String mucName) {
MucName = mucName;
}
public String getSingerName() {
return singerName;
}
public void setSingerName(String singerName) {
this.singerName = singerName;
}
? ? public Time getMucTime() {
return MucTime;
}
public void setMucTime(Time mucTime) {
MucTime = mucTime;
}
public String getMucPath() {
return MucPath;
}
public void setMucPath(String mucPath) {
MucPath = mucPath;
}
public String getMucImg() {
return MucImg;
}
public void setMucImg(String mucImg) {
MucImg = mucImg;
}
? ?
? ? public music(String mucName, String singerName, Time mucTime, String mucPath, String mucImg) {
MucName = mucName;
this.singerName = singerName;
MucTime = mucTime;
MucPath = mucPath;
MucImg = mucImg;
}
@Override
public String toString() {
return "music{" +
"MucId=" + MucId +
", MucName='" + MucName + '\'' +
", singerName='" + singerName + '\'' +
", MucTime=" + MucTime +
", MucPath='" + MucPath + '\'' +
", MucImg='" + MucImg + '\'' +
'}';
}
}
Dao層:
public interface MusicAskDao {
List<music> findAll();
Integer addMusic(music music);
}
Mapper:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yohane.dao.MusicAskDao">
<resultMap id="musicDo" type="com.yohane.pojo.music">
<id column="id" property="MucId"/>
<result column="name" property="MucName"/>
<result column="musicTime" property="MucTime"/>
<result column="musicPath" property="MucPath"/>
<result column="musicImg" property="MucImg"/>
</resultMap>
<select id="findAll" resultMap="musicDo">
select * from music_table
</select>
<insert id="addMusic" parameterType="com.yohane.pojo.music">
insert into music_table(name,singerName,musicTime,musicPath,musicImg) values(#{MucName},#{singerName},#{MucTime},#{MucPath},#{MucImg})
</insert>
</mapper>
test:
@Test
public void testMybatis(){
SqlSession sqlSession = LoadMybatis.getSqlSession();
MusicAskDao ask = sqlSession.getMapper(MusicAskDao.class);
List<music> musicList = ask.findAll();
for (music value:musicList){
System.out.println(value.toString());
}
}
數(shù)據(jù)庫:

問題:
在查詢所有數(shù)據(jù)的時候出現(xiàn)了
Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'singerName' from result set. Cause: java.sql.SQLDataException: Cannot convert string '周杰倫' to java.sql.Time value
報錯
翻譯過來就是:
原因:org.apache.ibatis.executor.result.ResultMapException:嘗試從結(jié)果集中獲取列“singerName”時出錯。原因:java.sql.SQLDataException:無法轉(zhuǎn)換字符串'周杰倫' 到j(luò)ava.sql.Time值
解決方案:
在使用添加Music到數(shù)據(jù)庫中方法使創(chuàng)建了一個有參構(gòu)造函數(shù)(id不包含,因為在數(shù)據(jù)中是自增)。
添加完之后,查詢的時候就發(fā)現(xiàn)了報錯。
原因是有了有參構(gòu)造函數(shù)之后無參構(gòu)造函數(shù)則不存在,添加上后即可解決。文章來源:http://www.zghlxwxcb.cn/news/detail-509613.html
擴展問題:
mybatis實體為什么要提供一個無參的構(gòu)造函數(shù)
Mybatis 會調(diào)用這個默認構(gòu)造函數(shù)來構(gòu)造實例,即實體類需要通過Mybatis進行動態(tài)反射生成。文章來源地址http://www.zghlxwxcb.cn/news/detail-509613.html
到了這里,關(guān)于mybatis中Error attempting to get column ‘xx‘ from result set 問題解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!