2
以下は私のマッパーxmlです。以下mybatisアサーションはサイズ1のリストのみを返しますか?
<mapper namespace="/">
<resultMap id="JiKeAuthorMap" type="Author">
<id property="id" column="author.id" />
<result property="realName" column="realName" />
<result property="IDCard" column="IDCard" />
<association property="jikeUser" column="userID"
javaType="JiKeUser" >
<id property="id" column="jikeUser.id" />
<result property="userName" column="userName" />
<result property="password" column="password" />
</association>
</resultMap>
<select id="selectAuthorJoin" resultMap="JiKeAuthorMap">
select * from author join jikeUser
on jikeuser.id=author.userID
</select>
</mapper>
著者FROMテーブル著者
SELECT *です。以下
id realName userID IDCard
------ ------------ ------ --------
3 cccccc 3 (NULL)
2 bbb 2 (NULL)
1 dddddd 8 (NULL)
テーブルJiKeUser FROM JiKeUser
SELECT *です。以下
id userName password
------ --------- ----------
2 jike00100 666666
3 jike00200 888888
8 author001 123456
のJava POJOのメインコードである。(著者がjikeUserへの参照を持っている)
public class Author {
private Integer id; //
private JiKeUser jikeUser; //reference to JiKeUser table
それから「select'.Theサイズは一つだけで実行するコードの下に使用します。
List<Author> ap=session.selectList("selectAuthorJoin");
System.out.println(ap.size()); //1
実際にはサイズは3である必要があります。あなたは以下を見ることができます。
SELECT * FROM author INNER JOIN jikeUser
ON jikeuser.id=author.userID ;
id realName userID IDCard id userName password
------ -------- ------ ------ ------ --------- ----------
2 bbb 2 (NULL) 2 jike00100 666666
3 cccccc 3 (NULL) 3 jike00200 888888
1 dddddd 8 (NULL) 8 author001 123456
しかし、私のコードでは以下のように最初の行だけが返されるのは無理です。
id realName userID IDCard id userName password
------ -------- ------ ------ ------ --------- ----------
2 bbb 2 (NULL) 2 jike00100 666666
上記のようにクエリの結果がすべて必要な場合は、代わりに 'JiKeUser'をテーブルに入れる必要がある場合は、' author'ビーン自体で 'usernameとpassword'に' gettersとsetters'を使うことができます'associationプロパティ'を削除して 'result property'に置き換えてください。一方、' pojos'を書くことを避けて 'linked hashmap'のリストを返すことができます。 – SiddP