mybatis 中collection用法_列名重复问题
问题描述:
A表和B表左连接 条件A.id=B.id
A表和C表左连接 条件A.id=C.id
B表和C表左连接 条件B.name=C.name
需要用到2个不同的C表集合,但是用下面的作法,集合C2没有取到值(其实用sql可以取到)。
调查发现集合C1,C2是用的同一个表结构,sql执行后,列名重复,所以C2没有取到值,请问这个问题该怎么解决?
sql:
查询用到的entity
mybatis用到的xml
A表和B表左连接 条件A.id=B.id
A表和C表左连接 条件A.id=C.id
B表和C表左连接 条件B.name=C.name
需要用到2个不同的C表集合,但是用下面的作法,集合C2没有取到值(其实用sql可以取到)。
调查发现集合C1,C2是用的同一个表结构,sql执行后,列名重复,所以C2没有取到值,请问这个问题该怎么解决?
sql:
SELECT
A.*,B.*,C1.*,C2.*
FROM
A
LEFT JOIN B ON A.ID = B.ID
LEFT JOIN C AS C1 ON A.ID = C1.ID
LEFT JOIN C AS C2 ON B.NAME = C2.NAME查询用到的entity
@SuppressWarnings("PMD.UnusedPrivateField")
@Getter
@Setter
public class Entity implements Serializable {
private AEntity A;
private BEntity B;
private List<CEntity> C1;
private List<CEntity> C2;
}mybatis用到的xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xx.xx.xxx.MybatisMapper">
<resultMap id="resultMap_XXXXXXXXX"
type="xx.xx.xxx.Entity "
autoMapping="true" >
<association property="A" resultMap="xx.xx.resultMap_AEntity" />
<association property="B" resultMap="xx.xx.resultMap_BEntity" />
<collection property="C1" resultMap="xx.xx.resultMap_C1Entity" />
<collection property="C2" resultMap="xx.xx.resultMap_C2Entity" />
</resultMap>
<select id="select_result" resultOrdered="true"
resultMap="resultMap_XXXXXXXXX"
parameterType="xx.xx.xxx.MybatisParameter"
fetchSize="500">
SELECT
A.*,B.*,C1.*,C2.*
FROM
A
LEFT JOIN B ON A.ID = B.ID
LEFT JOIN C AS C1 ON A.ID = C1.ID
LEFT JOIN C AS C2 ON B.NAME = C2.NAME
</select>
</mapper>
...全文
相关推荐
mybatis collection 多条件查询的实现方法
以下是对`mybatis collection 多条件查询的实现方法`的详细说明:首先,我们需要定义一个`resultMap`来描述查询结果的映射关系。
mybatis知识点.docx
六、解决数据库列名和实体类属性名不一致的问题在 MyBatis 中,数据库列名和实体类属性名不一致是一个常见的问题,可以使用以下两种方式来解决:* 开启驼峰命名法:可以将数据库列名映射到实体类属性名。
mybatis同一张表多次连接查询相同列赋值问题小结
数据库查询时使用别名: 当查询语句中的列名重复时,可以为每个查询子句添加别名,使得每个别名下的列名变得唯一。
myBatis面试问题
在面试中,关于MyBatis的问题是常见的面试内容,下面将根据提供的文件内容,详细解析在面试中可能出现的关于MyBatis的一些知识点。
Mybatis中实体类属性与数据列表间映射方法介绍
("userName") String userName);```这种方法的缺点是需要在每个方法上都添加注解,可能会导致配置重复的问题。


