四、数据库表中的字段名与实体类属性名不相同,可用resultMap解决
1.准备表和数据
CREATE TABLE teacher(
t_id number(8) PRIMARY KEY,
t_name VARCHAR2(30)
);
INSERT INTO teacher(t_id,t_name) VALUES(10001,'LS1');
INSERT INTO teacher(t_id,t_name) VALUES(10002,'LS2');
2.定义实体类
public class Teacher {
private int t_id;
private String tname;
public Teacher() {
}
public Teacher(int t_id, String tname) {
super();
this.t_id = t_id;
this.tname = tname;
}
public int getT_id() {
return t_id;
}
public void setT_id(int t_id) {
this.t_id = t_id;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
@Override
public String toString() {
return "Teacher [t_id=" + t_id + ", tname=" + tname + "]";
}
}
3.通过resultMap实现对teacher的查询 teacherMapper.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.entity.teacherMapper">
<resultMap type="Teacher" id="TeacherResultMap">
<id column="t_id" property="t_id"/>
<result column="t_name" property="tname"/>
</resultMap>
<select id="getAllTeacher" resultMap="TeacherResultMap">
select * from teacher
</select>
</mapper>
4.在conf.xml文件中注册classMapper.xml,设置entity的别名
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.entity.teacherMapper">
<resultMap type="Teacher" id="TeacherResultMap">
<id column="t_id" property="t_id"/>
<result column="t_name" property="tname"/>
</resultMap>
<select id="getAllTeacher" resultMap="TeacherResultMap">
select * from teacher
</select>
</mapper>
<typeAliases>
<typeAlias type="com.mybatis.entity.Teacher" alias="Teacher"/>
</typeAliases>
<mappers>
<mapper resource="com/mybatis/entity/teacherMapper.xml" />
</mappers>
5.测试
@Test
public void selectAll(){
try {
String statement = "com.mybatis.entity.teacherMapper.getAllTeacher";
List<Teacher> teachers = null;
teachers = session.selectList(statement);
System.out.println(teachers);
} catch (Exception e) {
e.printStackTrace();
}
}
resultMap的属性:
id属性resultMap标签的标识。
type属性返回值的全限定类名,或类型别名。
子元素属性:
id元素 , 用于设置主键字段与领域模型属性的映射关系.
result元素 ,用于设置普通字段与领域模型属性的映射关系
column为数据库表中列名
property为类中属性名 如:Teacher中的tname属性与teacher表中的t_name属性
property为类中属性名 如:Teacher中的tname属性与teacher表中的t_name属性