最终解决Mybatis多表联合查询中字段名重复导致的各路问题
2017-10-11 11:21
423 查看
解决字段名重复导致的问题,简单直接的方法是设置别名,例如
然而随之楼主又出现了一个新的问题,例如此例中,当postCode为空时,postid和postname理所当然为空。这时,又出现了问题:post的id和name竟然被赋予了外围employee的id和name值。这显然不是我们想要的结果啊,怎么办呢:
在mybatis的配置文件中加上这句代码后,post的id和name,被正常的赋予了null值,而不是错误的employee的值了。
然而还是不对啊,这里employee为空,查询返回的post应该是null才对,而不是返回一个属性都是空的post。
怎么解决呢,尝试一下另一种association的查询方式吧:
用分步查询的方式,果然没有嵌套查询所带来的问题了。返回了正常的null。
问题解决。
<id column="id" jdbcType="BIGINT" property="id"/> <result column="name" jdbcType="VARCHAR" property="name"/> <association property="post" column="postCode" javaType="com.test.post.model.Post" > <id property="id" column="postid"/> <result property="name" column="postname"/> </association>
然而随之楼主又出现了一个新的问题,例如此例中,当postCode为空时,postid和postname理所当然为空。这时,又出现了问题:post的id和name竟然被赋予了外围employee的id和name值。这显然不是我们想要的结果啊,怎么办呢:
<configuration> <settings> <setting name="callSettersOnNulls" value="true"/> <!--查询字段为空时依旧返回至对象--> </settings> </configuration>
在mybatis的配置文件中加上这句代码后,post的id和name,被正常的赋予了null值,而不是错误的employee的值了。
然而还是不对啊,这里employee为空,查询返回的post应该是null才对,而不是返回一个属性都是空的post。
怎么解决呢,尝试一下另一种association的查询方式吧:
<association property="post" column="postCode" select="com.test.post.dao.PostMapper.selectByPrimaryKey"/>
用分步查询的方式,果然没有嵌套查询所带来的问题了。返回了正常的null。
问题解决。
相关文章推荐
- 解决Mysql数据库实现多表联合查询及按照其中一个字段进行排序问题
- hibernate 多表联合查询,分页,重复记录导致的总记录数不对的解决方法。
- Hibernate使用原生SQL多表查询时字段名相同导致查询数据覆盖问题解决办法
- hibernate使用原生sql查询Hibernate原生SQL多表查询字段名重复问题以及解决方法
- [已解决]mybatis联合查询能查询到数据,但不能绑定到bean上去的问题
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
- Webphere发布项目断电导致重复发包失败问题解决
- eclipse解决Android Library Project jar包重复导致的问题
- mysql 并行写数据导致重复的问题,加间隙锁解决
- 解决因页面刷新而导致重复操作的问题
- FragmentTabHost切换Fragment时避免重复加载UI,导致切换后重绘页面的问题解决
- 解决jqgrid多字段查询页面加载结束就弹出查询窗口的问题
- 因第三方包名重复导致编译报错问题的解决
- [实例] 简单搞定联合查询注入字段间编码不同无法显示内容问题
- 利用 runtime,解决多次点击相同 button,导致重复跳转的问题-b
- oracle分页查询数据重复问题的解决
- 解决union all 联合查询,速度慢的问题
- Mybatis oracle多表联合查询分页数据重复的问题
- iOS- 利用runtime,解决多次点击相同button,导致重复跳转的问题
- 解决pl/sql developer 中文字段显示乱码或无法用中文作查询条件的问题