本文共 1557 字,大约阅读时间需要 5 分钟。
版权声明:版权声明:尊重他人劳动成果,转载请注明出处:
本文是对 mybatis 级联操作最简单操作的介绍,如果想要了解有关 association 和 collection 内容的话,可以移步到这篇文章进行阅读。
bean 之间的关系:一名老师可以有多名学生
public class Student { private Integer id; private String name; private Teacher teacher; // 省略 get/set 方法}
public class Teacher { private String name; private Integer id; private ListstudentList; // 省略 get/set 方法}
关键代码:
@Testpublic void main() throws Exception { OneToManyDao oneToManyDao = new OneToManyDao(); oneToManyDao.testFindByName("t1");}/** * 根据老师名字,查询该老师的所有学生 * @param name 老师名字 * @return 该老师的所有学生 * @throws Exception */public ListtestFindByName(String name) throws Exception { SqlSession sqlSession = getSession().openSession(); return sqlSession.selectList(stuDaoNameSpace+ ".findByName", name);}
映射文件(studentMapper.xml)
小提示 1:这里为什么要写成 resultMap="StudentMap"
呢?
回答:这是由下面的 SQL 查询返回的结果决定的。本 SQL 需要返回 stu 表的 id 和 name 字段。那么我们就需要将找到一个对象来接收 SQL 返回的字段。而在 resultMap
标签中,正好封装了这两个字段,因此我们可以这么写。
另外需要补充的是:如果表字段名和对应 bean 属性名一样的话,可以使用 resultType="com.czd.mybatis02.bean.Student"
代替上面的 resultMap="StudentMap"
。在这里使用 resultMap
的目的就是为了解决表字段名和对应 bean 属性名不一致,导致无法通过反射将彼此成功映射的问题。
resultType 和 resultMap 是不能同时存在的。
输出结果:
从上图我们可以看出 SQL 成功执行并且影响了两条记录。(即查询到了两条符合要求的记录)