如下:这段sql代码在ssm框架中运行出来缺少字段SchoolCollegeName、MajorName、CourseName
<select id="SelectBookInfo" parameterType="HashMap" resulType="com.example.demo.model.Book
">
select id,SchoolCollegeID,MajorID,CourseID,GetSchoolCollegeName(SchoolCollegeID) as
SchoolCollegeName,GetMajorName(MajorID) as MajorName,GetCourseName(CourseID) as
CourseName,Name,PushStatus,CoverImageAssTrueName,CoverImageAssSysName from Book
</select>
然后经过搜搜我发现,原来是在 Book 这个Model类中没有关于SchoolCollegeName、MajorName、CourseName的定义和方法,所以我现在发现的解决方法有两种
方法一:
在Book 这个实体中添加对SchoolCollegeName、MajorName、CourseName这三个字段的定义以及封装。
方法二:
将上面那段代码进行修改,把resultType修改为resultMap.自定义一个resultMap,在自定义的resultMap中添加你想显示的在sql语句中对应的字段名,我自定义的如下:
<resultMap id="BookInfo" type="HashMap">
<id column="id" jdbcType="INTEGER" property="ID" />
<result column="SchoolCollegeID" jdbcType="INTEGER" property="SchoolCollegeID" />
<result column="MajorID" jdbcType="INTEGER" property="MajorID" />
<result column="CourseID" jdbcType="INTEGER" property="CourseID" />
<result column="SchoolCollegeName" jdbcType="VARCHAR" property="SchoolCollegeName" />
<result column="MajorName" jdbcType="VARCHAR" property="MajorName" />
<result column="CourseName" jdbcType="VARCHAR" property="CourseName" />
<result column="Name" jdbcType="VARCHAR" property="Name" />
<result column="PushStatus" jdbcType="VARCHAR" property="PushStatus" />
<result column="CoverImageAssTrueName" jdbcType="VARCHAR" property="CoverImageAssTrueName" />
<result column="CoverImageAssSysName" jdbcType="VARCHAR" property="CoverImageAssSysName" />
</resultMap>