资讯动态

Java EE2(第三章:Mybatis多表关系映射-下)

发布时间:2026/8/7 11:33:25 来源:尧图企业网站定制
目录一、一对一User类Usercard类​编辑mybatis中一对一结果集映射配置UserMapper.xml二、一对多建表xml三、多对多建表多表关联查询实体类xml总结一、一对一在Java中user表的每一行数据对应一个User类的对象user_card表的每一行数据对应一个UserCard类的对象思考在设计实体类User UserCard时如何体现出User对象和UserCard对象的关系解决方案通常在User类中设计一个UserCard属性用于表示当前User对象对应的UserCard对象User类Usercard类mybatis中一对一结果集映射配置UserMapper.xmlresultMap idrm1 typeUser!--主键--id propertyid columnuser_id/id!--其他属性 省略名字统一的属性--result propertyname columnname/resultresult propertysex columnsex/resultresult propertymobile columnmobile/resultresult propertyemail columnemail/result!--复杂自定义引用数据类型映射--association propertyuserCard javaTypeUserCard!--主键--id propertyid columnc_id/id!--其他属性--result propertybirthday javaTypejava.util.Datecolumnbirthday jdbcTypeDATE/resultresult propertynationnality columnnationnality/resultresult propertyidcard columnidcard/resultresult propertyissued columnissued/resultresult propertyexpireBegin javaTypejava.util.Datecolumnexpire_begin jdbcTypeDATE/resultresult propertyexpireEnd javaTypejava.util.Datecolumnexpire_end jdbcTypeDATE/result/association/resultMap二、一对多一对多在业务需求中应用非常广泛例如一个用户对应多个订单一个订单对应多个商品一个部门对应多个员工等案例一个班级对应多个学生班级t_classesid(班级编号),name(班级名称)学生t_studentsid(学号),name(学生姓名),sex(性别),idcard(身份证号码)班级t_classesid(班级编号),name(班级名称)学生t_studentsid(学号),name(学生姓名),sex(性别),idcard(身份证号码),c_id(班级编号)一对多表关系中在多的表中建立一的编号作为数据的关联关系建表xml三、多对多多对多表映射关系在实际应用中非常常见例如老师和学生教室和学生订单和商品一个老师对应多个学生一个学生对应多个老师学生表t_studentsid(学号) name (姓名) sex(性别) idcard(身份证号码)c_id(班级编号)教师表t_teacherid(教师编号) name(姓名) sex(性别) mobile(手机号码)第三张表(中间表)为了存储学生和老师的映射关系t_student_teachersid(学生编号) tid(教师编号)建表多表关联查询三表关联查询select表名.列名1,表名.列名2,...from表名1别名1 left join表名2别名2 on表1和表2的连接条件left join表名3别名3 on和表3的连接条件例如#查询所有学生及其对应的老师的信息select s.id s_id,s.name s_name,s.sex s_sex,s.idcard s_idcard,t.id t_id,t.name t_name,t.sex t_sex,t.mobile t_mobilefrom t_students s LEFT JOIN t_student_teacher st on s.idst.sidLEFT JOIN t_teacher t on st.tidt.id#查询所有老师及其对应的学生的信息select s.id s_id,s.name s_name,s.sex s_sex,s.idcard s_idcard,t.id t_id,t.name t_name,t.sex t_sex,t.mobile t_mobilefrom t_teacher t LEFT JOIN t_student_teacher st on t.idst.tidLEFT JOIN t_students s on st.sids.id实体类xml总结表设计一对一:在任意表中定义一个列关联另一个表的主键一对多:在多的一方表中定义一个列关联另一个表的主键多对多:定义中间表包含两个表的主键列多表关联查询sql内连接 inner join左外连接left join右外连接right join实体类一对一(定义实体类类型属性)一对多(定义实体类集合类型属性)mybatis手动映射结果集实现一对一(association标签映射)一对多(collection标签映射)

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价