这是我的SQL和resultmap
:
<resultMap id="playerMap" type="player">
<id column="playerId" property="id"/>
<result column="playerName" property="name"/>
<association property="team" javaType="Team">
<id column="teamId" property="id"/>
<result column="teamName" property="name"/>
</association>
</resultMap>
<select id="selectPlayerById" resultMap="playerMap">
select p.id playerId,p.name playerName,
t.name teamName,t.id teamId
from t_player p,t_team t
where p.tid=t.id and p.id=#{id}
</select>
这是我的结果:
但是“玩家”列为空。如何更改我的SQL语句,以便此列可以查询多个播放器的信息?
答案 0 :(得分:0)
首先,您必须弄清楚要表示什么样的关系。
对我来说,您的班级球员和会员球员似乎很像。那么,玩家可以有玩家吗?
如果要选择全部或几个玩家,则必须添加第二个select
元素或将现有的元素更改为类似的内容:
<select id="selectPlayers" resultMap="playerMap">
select p.id playerId,p.name playerName,
t.name teamName,t.id teamId
from t_player p,t_team t
where p.tid=t.id
</select>
您可以根据需要扩展where子句。
如果您使用interfaces
访问mybatis-xml-mappers中的方法,则必须将以下方法添加到特定的interface
中:
List<Player> selectPlayers();
我们还可以将两个选择组合在一起,例如:
mapper-xml中只有一个select
元素
<select id="selectPlayers" resultMap="playerMap">
select p.id playerId,p.name playerName,
t.name teamName,t.id teamId
from t_player p,t_team t
where p.tid=t.id
<choose>
<when test="id != null" >
and p.id=#{id}
</when>
<when test="name != null" >
and p.name=#{name}
</when>
<otherwise>
</otherwise>
</choose>
</select>
具有一种相应的interface
方法:
List<Player> selectPlayers(@Param("id") long id, @Param("name") String name);