Mybatis一对多关联查询,返回值Map,字段自动映射

功能描述

由于查询字段和表名都要支持动态配置,故查询返回值需要为List>,不定义值对象。

查询结果列需要支持自动映射,不配置类属性和数据库字段的映射关系。

查询需要支持一对多关联查询。

实现思路

Mybatis支持2种常见返回值。

1. 在resultType中配置一个Pojo类,Mybatis会自动根据命名规则将SQL语句中的字段转换成pojo类中的属性。

2. 使用resultMap,一般是需要手供配置映射关系。

要实现描述的功能,可以使用resultMap的collection元素,并且将resultMap的autoMapping="true"让resultMap支持自动映射了(默认是false)并将type="map"。然后在SQL中进行表关联。就可以将返回值映射为Map了。

实现步骤

resultMap和SQL配置。代码参数如下:

    
		
		
	

	

上面的SQL,select后面的字段名,表名都是根据配置对象动态生成的。

objectConfig对应的是表配置对象。

synFieldConfigList对应的是字段配置对象

动态的数据表可能还会存在子表关联数据,也就是sql中的syn_data_entry表。

Mapper代码参考:

    /**
     * 根据对象配置,动态查询数据。还会读取同步数据子表。
* @author namelessmyth * @return List> 子表的key为entryList,类型为List */ public List> listDataByConfig( @Param("task") SynTask task, @Param("objectConfig") SynObjectConfig objectConfig );

你可能感兴趣的:(SQL,Mybatis,mybatis,java,sql)