.1)通过resultMap来解决数据库的字段和类中的属性不一致的问题
1.在mapper文件中编写如下
<select id="queryStudentByNoWithResultMap" resultMap="StudqueryStudentByNoWithMap"> select * from student where sno=#{xx} </select> <resultMap id="StudqueryStudentByNoWithMap" type="student"> <id property="stuno" column="sno"></id> <result property="stuName" column="sname"></result> <result property="stuAge" column="sage"></result> <result property="graName" column="gname"></result> <result property="stuSex" column="ssex"></result> </resultMap>
1.1 resultMap分为主键与非主键
1.2 通过column指定的字段返回的结果填入property中填写的java属性
.2)鉴别器(对查询的结果进行分支处理)
1.1 实体不需要改造因为最终的结果只有一个 可以使用stuName来接收名称或者昵称
1.2 鉴别器的编写
<select id="queryStudentsWithResultMap" resultMap="StudqueryStudentByNoWithMap2"> select * from student </select> <resultMap id="StudqueryStudentByNoWithMap2" type="student"> <id property="stuno" column="sno"></id> <result property="stuAge" column="sage"></result> <result property="graName" column="rname"></result> <result property="stuSex" column="ssex"></result> <discriminator javaType="String" column="rname"> <case value="S1" resultType="student"> <result property="stuName" column="sname"></result> </case> <case value="aji" resultType="student"> <result property="stuName" column="nickname"></result> </case> </discriminator> </resultMap>
1.2.2 最后填写映射内容
<result property="stuName" column="sname"></result> <result property="stuName" column="nickname"></result>
.3) 别名的问题
1.在主配置文件配置别名 (包和子包)中的所有类 起了别名
<typeAliases> <package name="org.hbz.entity"/> </typeAliases>
2.引发了一个问题加入我本包里面的类名与子包里面的类名一致了怎么办?
2.1 只需要在两个类任意一个类上面加上这么一个注解 就可以区分了 但是设置的值不要和类名一致
@Alias("MyStudent") public class Student { }