Mybatis一对多处理

    科技2026-01-11  13

    Mybatis一对多处理

    对于一个老师,可以同时教多个学生,所以站在老师的角度,和学生的关系就是一对多了

    这是student表和teacher表内容

    pojo:


    我们先写一个接口来查询出所有老师的记录

    映射文件:

    测试代码:打印出教师对象内容

    运行结果:

    我们可以发现,teacher对象中的students没有成功显示,这是因为属性名和字段名不一致导致的,所以我们需要使用结果集映射resultMap

    要打印teacher对应的学生信息,我们有必要先修改一下sql语句,把两张表连接起来

    定义TeacherStudent结果集映射

    由于打印的是teacher的内容,所以type是teacher ;对于简单属性,直接用result标签与数据库字段作映射,注意这里的column字段要和上面sql语句的别名保持一致,否则找不到字段会报错,一个teacher对应多个学生,所以要用collection标签,property的值要和实体类里的属性同名 ;接着就直接映射学生字段和属性即可

    测试代码同上,运行一下:

    sql语句结果正常显示,teacher对象包含的所有学生信息也成功打印出来

    tip:如果上面collection标签下学生的属性不全部映射的话,打印出来的学生对应的属性为null

    比如不映射stuname

    运行结果就不含学生名

    这种方法是基于连接查询的一对多处理,还有一种是子查询方法,较复杂,有兴趣的朋友可以去了解一下。

    Processed: 0.016, SQL: 9