首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

Study MyBatis Step by Step 二

2014-01-17 
Study MyBatis Step by Step 2package com.mybatis.inpublic class ClassRoom {private String roomIdpr

Study MyBatis Step by Step 2
package com.mybatis.in;public class ClassRoom {private String roomId;private String roomName;private float area;public String getRoomId() {return roomId;}public void setRoomId(String roomId) {this.roomId = roomId;}public String getRoomName() {return roomName;}public void setRoomName(String roomName) {this.roomName = roomName;}public float getArea() {return area;}public void setArea(float area) {this.area = area;}}

?

package com.mybatis.in;public class Course {private String courseId;private String courseName;private String courseType;private ClassRoom classRoom;public String getCourseId() {return courseId;}public void setCourseId(String courseId) {this.courseId = courseId;}public String getCourseName() {return courseName;}public void setCourseName(String courseName) {this.courseName = courseName;}public String getCourseType() {return courseType;}public void setCourseType(String courseType) {this.courseType = courseType;}public void setClassRoom(ClassRoom classRoom) {this.classRoom = classRoom;}public ClassRoom getClassRoom() {return classRoom;}}


下面创建一个接口

?

?

package com.mybatis.in;import java.util.List;public interface CourseMapper {public List<Course> getCourses();public List<Course> getCoursesClassRoom();}


下面创建一个映射文件

?

?

<resultMap type="ClassRoom" id="classRoom"><id property="roomId" column="roomId"/><result property="roomName" column="roomName"/><result property="area" column="area"/></resultMap><resultMap id="courseClassRoom" type="Course"><id property="courseId" column="courseId"/><result property="courseType" column="courseType"/><result property="courseName" column="courseName"/><association property="classRoom" resultMap="classRoom"></association></resultMap><!-- configuration for the SQL --><select id="getCoursesClassRoom" resultMap="courseClassRoom"><![CDATA[select c.courseId courseId,c.courseType courseType,c.courseName courseName,room.roomId roomId,room.roomName roomName,room.area areafrom course c inner join classroom roomon c.roomId=room.roomId]]></select>

我们要对这个配置进行关键的讲解,其中的association配置就起到了映射的作用,相信大家也看的明白,下面我们讲一下association还有其他几种配置方式,

?

一种就是不要resultMap属性,然后在association中间进行配置,和resultMaper一样的配置方式。association还有两个重要的属性一个javaType,还有一个columnPrefix,对于javaType,就是你可以再javaBean中定义一个抽象的类型,然后在查询的时候决定使用哪一个具体的类型。columnPrefix的作用就是,对于resultMap中所有的column可以再SQL中添加一个prefix达到区分的作用。

?

?

<!-- java type mapping --><typeAliases><typeAlias alias="Course"  type="com.mybatis.in.Course"/><typeAlias alias="ClassRoom"  type="com.mybatis.in.ClassRoom"/></typeAliases>



最后创建测试代码

?

?

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));SqlSession session = sqlSessionFactory.openSession();CourseMapper courseMapper =session.getMapper(CourseMapper.class);List<Course> courses = courseMapper.getCoursesClassRoom();//List<Course> courses = courseMapper.getCourses();System.out.println(courses.size());if(courses.size() > 0){System.out.println(courses.get(0).getClassRoom().getRoomName());}session.close();

?

?

在下一篇中讲解一对多关系,和深度查询。

热点排行