这期内容当中小编将会给大家带来有关如何在Mybatis项目中使用协会文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
接下来的文章中,关于Mybatis的示例,全部来自于Mybatis代码中的单元测试代码,通过这些代码能够学习Mybatis中很有用的知识,这些内容在doc文档中可能只是简单提到了,或者有一些文字说明,通过这些单元测试能更直观的了解如何在Mybatis使用这些内容。
这一节内容为协会关联的结果查询,就是在查询出结果后,根据查询的列和resultMap定义的对应关系,来创建对象并写入值。
- <李>协会——一个复杂的类型关联;许多结果将包成这种类型李> <李>嵌入结果映射——结果映射自身的关联,或者参考一个
李,>
(注:“参考一个”,这里参考一个是通过对象的关键来唯一确定的,如果关键值一样,就直接用已经存在的这个对象。)
协会是resultMap中的一个配置选项,下面是用到的类的UML图:
删除表的汽车如果存在; 创建cars表( carid整数, cartype varchar (20), enginetype varchar (20), enginecylinders整数, brakestype varchar (20) ); 插入汽车(carid cartype、enginetype enginecylinders, brakestype)值(1 & # 39;大众# 39;,& # 39;柴油# 39;,4,null); 插入汽车(carid cartype、enginetype enginecylinders, brakestype)值(2 & # 39;欧宝# 39;,空,空,& # 39;鼓# 39;); 插入汽车(carid cartype、enginetype enginecylinders, brakestype)值(3 & # 39;奥迪# 39;,& # 39;柴油# 39;,4日& # 39;磁盘# 39;); 插入汽车(carid cartype、enginetype enginecylinders, brakestype)值(4日& # 39;福特# 39;,& # 39;气体# 39;,8日& # 39;鼓# 39;);
映射器。xml文件:
& lt;映射器命名空间=皁rg.apache.ibatis.submitted.associationtest.Mapper"比; & lt; resultMap类型=皁rg.apache.ibatis.submitted.associationtest.Car"id=癱arResult"比; & lt; id列=癱arid"属性=癷d"/比; & lt;结果列=癱artype"属性=皌ype"/比; & lt;协会财产=癳ngine"resultMap=癳ngineResult"/比; & lt;协会财产=癰rakes"resultMap=癰rakesResult"/比; & lt;/resultMap> & lt; resultMap类型=皁rg.apache.ibatis.submitted.associationtest.Engine"id=癳ngineResult"比; & lt;结果列=癳nginetype"属性=皌ype"/比; & lt;结果列=癳nginecylinders"属性=癱ylinders"/比; & lt;/resultMap> & lt; resultMap类型=皁rg.apache.ibatis.submitted.associationtest.Brakes"id=癰rakesResult"比; & lt;结果列=癰rakesType"属性=皌ype"/比; & lt;/resultMap> & lt;选择id=癵etCars"resultMap=癱arResult"比; select *从汽车 & lt;/select> & lt;选择id=癵etCarsNonUnique"resultMap=癱arResult"比; 选择1作为carid、cartype enginetype, enginecylinders brakestype从汽车 & lt;/select> & lt;选择id=癵etCars2"resultMap=癱arResult"比; 选择1作为carid、cartype enginetype enginecylinders brakestype从汽车carid在(1、2) & lt;/select> & lt;/mapper>
其中的一个测试用例:
@Test 公共空间shouldGetAllCars () { SqlSession SqlSession=sqlSessionFactory.openSession (); 尝试{ Mapper Mapper=sqlSession.getMapper (Mapper.class); List汽车=mapper.getCars (); 断言。assertequal (4, cars.size ()); Assert.assertEquals (“VW" cars.get (0) . gettype ()); Assert.assertNotNull (cars.get (0) .getEngine ()); Assert.assertNull (cars.get (0) .getBrakes ()); Assert.assertEquals (“Opel" cars.get (1) . gettype ()); Assert.assertNull (cars.get (1) .getEngine ()); Assert.assertNotNull (cars.get (1) .getBrakes ()); 最后}{ sqlSession.close (); } }
汽车返回值: