我们正在将MyBatis用于我正在进行的一个项目。我在尝试使用结果图获取结果时遇到了一个问题。
mapper.xml
<resultMap id="BaseResultMap" type="com.mycompany.myproduct.dto.ChannelMap">
<id column="CHNL_MAP_ID" property="chnlMapId" jdbcType="DECIMAL" />
<result column="CHNL_MAP_NM" property="chnlMapNm" jdbcType="VARCHAR" />
<association property="ctnDlvryPltf"
resultMap="com.mycompany.myproduct.mapper.ContentDelvryPltfrmMapper.BaseResultMap" />
<association property="ctnDtr"
resultMap="com.mycompany.myproduct.mapper.ContentDistributorMapper.BaseResultMap" />
<association property="region"
resultMap="com.mycompany.myproduct.mapper.RegionMapper.BaseResultMap" />
</resultMap>
<sql id="Value_Columns_List">
cmap.CHNL_MAP_NM, cdp.CTN_DLVRY_PLTF_NM,
cdp.CTN_DLVRY_PLTF_TYP_NM, cdp.CTN_DTR_NM, cd.CTN_DTR_NM,
cmap.RGN_ID, cmap.CNTRY_ID
</sql>
<select id="select" resultMap="BaseResultMap">
select
<include refid="Value_Columns_List" />
FROM
channel_map cmap,
(SELECT
cdpl.ctn_dlvry_pltf_id,cdpl.ctn_dlvry_pltf_nm,
cdplt.ctn_dlvry_pltf_typ_nm ,cds.ctn_dtr_nm FROM
content_delvry_pltfrm
cdpl,
content_delvry_pltfrm_typ cdplt,
content_distributor cds
WHERE
cdpl.ctn_dlvry_pltf_typ_id =
cdplt.ctn_dlvry_pltf_typ_id AND
cdpl.ctn_dtr_id = cds.ctn_dtr_id)
cdp,
content_distributor
cd
WHERE
cmap.ctn_dlvry_pltf_id = cdp.ctn_dlvry_pltf_id AND
cmap.ctn_dtr_id = cd.ctn_dtr_id
</select>
在上述文件中需要注意的重要事项是,我们通过不同的别名在选择查询中两次获取名为CTN_DTR_NM的列(请参阅Value_Columns_List)。这是因为channel_map表包含CTN_DTR_NM。通道映射表还包含对另一个包含CTN_DTR_NM的表的引用。
我面临的问题是,即使channel_map表包含多行,select方法也会返回一个只包含一行的List。检查MyBatis日志显示实际查询获取了多行,并且所有获取的行都显示在日志中。我有一种感觉,这个问题与MyBatis获取的结果集映射到我的POJO的方式有关。
只要为chnlMapId属性使用id标记,就可以防止mybatis生成多个具有相同chnlMapId值的对象。?您是否尝试对chnlMapId属性使用结果标记而不是id标记?
问题内容: 我有两个用于查询表中行的SQL查询,具体取决于类型2或3。 查询1: 查询2: 现在,我只想获取和使用一个查询的值。如何使用一个查询获得计数。有没有办法做到这一点。我正在使用SQLite数据库。 编辑: 我想要分别为和的值,而不是两者都在一起(不使用)。 问题答案: 尝试使用 对于两个变量:
本文向大家介绍Mybatis中的resultType和resultMap查询操作实例详解,包括了Mybatis中的resultType和resultMap查询操作实例详解的使用技巧和注意事项,需要的朋友参考一下 resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,resultMap解决复杂查询是的
但是我在遗留系统上有一个具有许多属性的对象,我只想选择几个,尽管我知道选择几个属性通常是很快的。 如果不使用条件查询,这可能吗?
问题内容: 我对SQL还是很陌生,试图绕过它,但是有点令人困惑。这是我正在使用的东西的简化版本。 我有这张桌子叫: 上表是人员清单。他们的parent_id列指的是他们的父母。如果表上没有父母,则他们的parent_id为0。 现在,我希望能够获得每组人的单独列表:祖父母,子女和孙子女。 很容易获得祖父母(拉里和凯文),我可以执行以下查询: 但是当涉及到生子(约翰,拉里,杰森和米尔德雷德)和孙子(
有人愿意帮我完成一个jdbctemplate查询吗? 只需要获取具有唯一id的行,但存在重复的行,因为其他列(如date)具有不同的值。我需要最好得到最长日期,结果集不应该有任何重复项:x个 输出: 这几乎有效,但不完全有效。可悲的是,有重复的。 这是我正在使用的两张桌子。 PS.:使用PostgreSQL
主要内容:resultMap元素的构成,使用Map存储结果集,使用POJO存储结果集,resultType和resultMap的区别resultMap 是 MyBatis 中最复杂的元素,主要用于解决实体类属性名与数据库表中字段名不一致的情况,可以将查询结果映射成实体对象。下面我们先从最简单的功能开始介绍。 现有的 MyBatis 版本只支持 resultMap 查询,不支持更新或者保存,更不必说级联的更新、删除和修改。 resultMap元素的构成 resultMap 元素还可以包含以下子元素