如何在Mybatis项目中使用

  介绍

这期内容当中小编将会给大家带来有关如何在Mybatis项目中使用协会文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

接下来的文章中,关于Mybatis的示例,全部来自于Mybatis代码中的单元测试代码,通过这些代码能够学习Mybatis中很有用的知识,这些内容在doc文档中可能只是简单提到了,或者有一些文字说明,通过这些单元测试能更直观的了解如何在Mybatis使用这些内容。

这一节内容为协会关联的结果查询,就是在查询出结果后,根据查询的列和resultMap定义的对应关系,来创建对象并写入值。

    <李>协会——一个复杂的类型关联;许多结果将包成这种类型 <李>嵌入结果映射——结果映射自身的关联,或者参考一个
      李,

(注:“参考一个”,这里参考一个是通过对象的关键来唯一确定的,如果关键值一样,就直接用已经存在的这个对象。)

协会是resultMap中的一个配置选项,下面是用到的类的UML图:

如何在Mybatis项目中使用协会”> </p> <p>汽车对象中包含了引擎和刹车两个对象. map是接口对象.AssociationTest是该测试对象。</p> <p> SQL表结构和数据:</p> <pre class=删除表的汽车如果存在;   创建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 ();   }   }

汽车返回值:

如何在Mybatis项目中使用协会”> </p> <p>协会是嵌套查询中最简单的一种情况,像上述例子中,一般我们都会用一个汽车对面包含所有的属性,这里的例子使用了嵌套对象,使对像的结构更鲜明。不过一般情况下很少会拆分一个对象为多个,用的多的时候是多表查询的嵌套。</p> <p>上面XML中的</p> <p> carResult和engieResult, brakesResult都是分别定义,carResult引用了另外两个resultMap。<h2 class=如何在Mybatis项目中使用