Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

    用Mybatis有时候需要传入实体类参数并且返回实体类。

    传入实体类参数时最好不要写parameterType=“实体类路径”,更不要写mybatis不用的parameterMap,会报错的。不写的话只要mapper接口中传入此类,mybatis会自动处理传参,可以直接使用里面的属性值。

Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

   当返回值为实体类时,我们需要在.xml文件中声明resultMap,返回resultMap与声明的resultMap id相同即可。

Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

     but!!!当我们有时需要多个.xml文件中都返回相同的实体类时,在每个xml文件都声明相同的resultMap实体类很明显是不明智的,我们需要有一个公用的resultMap可以实现数据共享。

    解决方法如下:

Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

    可以在xml文件中新建一个commonMapper.xml(名字随意),把所有的resultMap都写在这个xml中。此xml不需要实现mapper接口,也就是说不用建对应的commonMapper.java接口。只有一个commonMapper.xml就够了。

Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

    注意记录这个公有xml的命名空间namespace和resultMap的id,(命名空间这里可以随便起一个名字,不需要跟对应的mapper接口名字一样,甚至都不需要那个mapper文件)我们在其他需要引用实体类的地方只需要用 “命名空间.id“就可以调用啦。

    如下图在.xml中引用commonMapper中的DictMap,直接写“commonMapper的命名空间.DictMap”即可。

Mybatis中resultMap是否可以共享(每个mapper.xml中都要重复定义相同的resultMap吗)

亲测可用,大家可以试试