MyBatis collection的两种方式ITeye - 超凡娱乐

MyBatis collection的两种方式ITeye

2019-01-13 13:10:55 | 作者: 佑运 | 标签: 句子,学生,教师 | 浏览: 2973

?xml version="1.0" encoding="utf8"? !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" !--与曾经相同,namespace的值是对应的映射器接口的完好称号-- mapper namespace="com.abc.mapper.TeacherMapper" !--TeacherMapper接口中getById办法对应的SQL句子。 查询教师及其辅导的学生的信息。因为教师、学生都有 id、name、gender等特点,因而给教师的字段都起了别号-- select id="getById" parameterType="int" resultMap="supervisorResultMap" select t.id t_id, t.name t_name, t.gender t_gender, t.research_area t_research_area, t.title t_title, s.id,s.name, s.gender,s.major,s.grade from teacher t,student s where t.id=#{id} and s.supervisor_id = t.id /select !--教师实体映射-- resultMap id="supervisorResultMap" type="Teacher" id property="id" column="t_id"/ result property="name" column="t_name"/ result property="gender" column="t_gender"/ result property="researchArea" column="t_research_area"/ result property="title" column="t_title"/ !--需求留意的是,上面的select句子中学生的字段名/别号应与 下面的column特点一 致。ofType指collection包括的元素的类型, 此特点不行少-- collection property="supStudents"ofType="Student" id property="id" column="id"/ result property="name" column="name"/ result property="gender" column="gender"/ result property="major" column="major"/ result property="grade" column="grade"/ !--映射学生的辅导教师特点,用到了supervisorResultMap自身-- association property="supervisor" resultMap="supervisorResultMap"/ /collection /resultMap /mapper
这种写法的缺陷是学生实体映射被嵌入到教师实体映射中,因而学生实体映射不能被重用。

二、嵌套的select句子
这种办法是运用一条独自的select句子来加载相关的实体(在本例中就是学生实体),然后在collection元素中引证此select句子.
 ?xml version="1.0" encoding="utf8"? 
 !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" 
 !--与曾经相同,namespace的值是对应的映射器接口的完好称号-- 
 mapper namespace="com.abc.mapper.TeacherMapper" 
 !--TeacherMapper接口中getById办法对应的SQL句子。 查询教师的信息。-- 
 select id="getById" parameterType="int" resultMap="supervisorResultMap" 
 select * from teacher where id=#{id} 
 /select 
 !--教师实体映射-- 
 resultMap id="supervisorResultMap" type="Teacher" 
 id property="id" column="id"/ 
 result property="name" column="name"/ 
 result property="gender" column="gender"/ 
 result property="researchArea" column="research_area"/ 
 result property="title" column="title"/ 
 !--ofType指collection包括的元素的类型,此特点不行少。 
column特点指把上述的getById的select句子中的教师id列的值作为参数 
传递给即将引证到的下述的getStudents的select句子,此特点不行少。 
引证的方式为:命名空间.select句子id-- 
 collection property="supStudents" column="id" ofType="Student"
 select="com.abc.mapper.StudentMapper.getStudents"/ 
 /resultMap 
 /mapper 


在这里把依据辅导教师id查询学生信息的SQL句子写在StudentMapper.xml中,并引证其间的学生实体映射studentResultMap。

 ?xml version="1.0" encoding="utf8"? 
 !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" 
 mapper namespace="com.abc.mapper.StudentMapper" 
 resultMap id="studentResultMap" type="Student" 
 id property="id" column="id"/ 
 result property="name" column="name"/ 
 result property="gender" column="gender"/ 
 result property="major" column="major"/ 
 result property="grade" column="grade"/ 
 !--在这里引证supervisorResultMap和getById 亦选用命名空间名.相关元素id的方式。 column="supervisor_id"特点不行少-- 
 association property="supervisor"
 resultMap="com.abc.mapper.TeacherMapper.supervisorResultMap"
 select="com.abc.mapper.TeacherMapper.getById"
 column="supervisor_id"/ 
 /resultMap 
 !--依据辅导教师id查询学生信息-- 
 select id="getStudents" parameterType="int" resultMap="studentResultMap" 
 select * from student where supervisor_id = #{id} 
 /select 
 /mapper 


本文出自 “肖凡的专栏” 博客 其它请参阅,http://legend2011.blog.51cto.com/3018495/888848
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    PHP多态ITeye

    多态,目标,不同
  • 2
  • 3
  • 4

    调用体系程序(转)ITeye

    进程,咱们,程序
  • 5
  • 6

    puttyITeye

    保存,用户名,暗码
  • 7

    1001ITeye

    小数点,个数,位数
  • 8
  • 9
  • 10

    vim装备ITeye

    文件,设置,状况