Mybatis-08-結果集對映
阿新 • • 發佈:2020-09-19
-
-
MyBatis 中最重要最強大的元素
-
解決欄位名和屬性名不一致的問題
-
ResultMap 的設計思想是,對簡單的語句做到零配置,對於複雜一點的語句,只需要描述語句之間的關係
-
-
ResultMap配置詳解
<!--
id為這個resultMap的標識
type為對映的型別,一個Java類的全限定名,或一個類型別名
-->
<resultMap id="" type="">
<!--
id和result都將一個列的值對映到一個簡單資料型別的屬性或欄位
column:對應資料庫中的列
property:對應實體類中的屬性
jdbcType:所支援的JDBC型別
typeHandler:型別處理器
-->
<id column="" property="" javaType="" jdbcType="" typeHandler=""></id>
<result column="" property="" javaType="" jdbcType="" typeHandler=""></result>
<!--
association處理“有一個”型別的關係
column:對應資料庫中的列
property:對應實體類中的屬性(物件)
javaType:指定實體類中屬性的型別
ofType:指定對映到集合中的實體類型別,泛型中的約束型別
select:用於載入複雜型別屬性的對映語句的id
會從column屬性指定的列中檢索資料,作為引數傳遞給目標select語句
-->
<association column="" property="" javaType="" select=""></association>
</resultMap> -
1、解決資料庫中的欄位和實體類中屬性不一致
-
實體類
-
介面類
User selectById(int id);
-
介面類的實現
<resultMap id="UserMap" type="user">
<!--
id,name屬性和資料庫中的欄位一樣,所有不需要顯式寫出,可省略
<result column="id" property="id"/>
<result column="name" property="name"/>
-->
<result column="pwd" property="password"/>
</resultMap>
<!--resultMap裡的值為結果集對映<resultMap></resultMap>的id值-->
<select id="selectById" resultMap="UserMap">
select * from mybatistest where id = #{id};
</select>
-
-
2、多對一以及一對多問題
-
Teacher表
id:老師id
name:老師姓名 -
Student表
id:學生id
name:學生姓名
tid:學生關聯的老師id -
多對一:多個學生對應一個老師,查詢學生的資訊以及學生的老師的資訊
-
1、老師類:Teacher
-
2、老師的介面類:TeacherMapper
public interface TeacherMapper {
} -
3、老師介面類的實現:TeacherMapper.xml
-
4、學生類:Student
-
5、學生的介面類:StudentMapper
public interface StudentMapper {
List<Student> getStudent();
} -
6、學生介面類的實現:StudentMapper.xml
-
方法一:根據查詢巢狀處理,子查詢
-
方法二:根據結果巢狀處理,關聯查詢
-
-
7、測試
public static void selectAll() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
List<Student> studentList = studentMapper.getStudent();
for (Student student : studentList) {
System.out.println(student);
}
sqlSession.close();
}
-
-
一對多:一個老師有多個學生,查詢指定老師下的學生的資訊,以及該老師的資訊
-
1、學生類:Student
-
2、學生的介面類:StudentMapper
public interface StudentMapper {
} -
3、學生介面類的實現類:StudentMapper.xml
-
4、老師類:Teacher
-
5、老師的介面類:TeacherMapper
public Teacher getTeacher(int id);
-
6、老師介面類的實現類:TeacherMapper.xml
-
方法一:根據查詢巢狀處理,子查詢
-
方法二:根據結果巢狀處理,關聯查詢
-
-
7、測試
public static void testTeacher() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
TeacherMapper teacherMapper = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher = teacherMapper.getTeacher(1);
System.out.println(teacher);
sqlSession.close();
}
-
-