質問編集履歴
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,7 +4,32 @@
|
|
4
4
|
#問題点
|
5
5
|
SQLのSELECT結果がnullで返却されること。
|
6
6
|
|
7
|
+
|
7
8
|
#ソース
|
9
|
+
|
10
|
+
```schema
|
11
|
+
DROP TABLE IF EXISTS detail CASCADE;
|
12
|
+
DROP TABLE IF EXISTS player CASCADE;
|
13
|
+
|
14
|
+
|
15
|
+
CREATE TABLE player
|
16
|
+
(
|
17
|
+
id character NOT NULL ,
|
18
|
+
name character varying(256),
|
19
|
+
age character varying(256),
|
20
|
+
detail_id character varying(256),
|
21
|
+
CONSTRAINT pkey PRIMARY KEY (id)
|
22
|
+
);
|
23
|
+
|
24
|
+
|
25
|
+
CREATE TABLE detail
|
26
|
+
(
|
27
|
+
detail_id character NOT NULL ,
|
28
|
+
work character varying(256),
|
29
|
+
CONSTRAINT ppkey PRIMARY KEY (detail_id)
|
30
|
+
);
|
31
|
+
```
|
32
|
+
|
8
33
|
```MyBatisMapper
|
9
34
|
<select id="selectItem" resultMap="PlayerDetailMap">
|
10
35
|
SELECT
|
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
SELECT
|
11
11
|
p.id
|
12
12
|
,p.name
|
13
|
-
,p.detail_id
|
14
13
|
,d.work
|
15
14
|
FROM
|
16
15
|
player p
|
@@ -26,9 +25,7 @@
|
|
26
25
|
<resultMap id="PlayerDetailMap" type="com.mybatis.test.domain.PlayerEntity">
|
27
26
|
<id property="id" column="id" />
|
28
27
|
<result property="name" column="name" />
|
29
|
-
<result property="detail_id" column="detail_id" />
|
30
28
|
<collection property="detailEntity" ofType="com.mybatis.test.domain.DetailEntity">
|
31
|
-
<result property="detail_id" column="detail_id" />
|
32
29
|
<result property="work" column="work" />
|
33
30
|
</collection>
|
34
31
|
</resultMap>
|
@@ -46,6 +43,7 @@
|
|
46
43
|
private String name;
|
47
44
|
private String age;
|
48
45
|
private String detail_id;
|
46
|
+
@Transient
|
49
47
|
private List<DetailEntity> detailEntity;
|
50
48
|
```
|
51
49
|
|
@@ -66,8 +64,19 @@
|
|
66
64
|
model.addAttribute("playerDetailEntity", playerDetailEntity);
|
67
65
|
return "index";
|
68
66
|
```
|
67
|
+
```index
|
68
|
+
<div th:object="${playerDetailEntity}">
|
69
|
+
<div>
|
70
|
+
<label><b>名前</b></label>
|
71
|
+
<p th:text="*{name}">
|
72
|
+
</div>
|
73
|
+
<div>
|
74
|
+
<label><b>仕事</b></label>
|
75
|
+
<p th:text="*{detailEntity.work}">
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
```
|
69
79
|
|
70
|
-
|
71
80
|
MyBatisMapper.xmlの記述が問題だと思われるのですが、
|
72
81
|
どこがイケナイのかわかりません。
|
73
82
|
ご教示お願い致します。
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
SELECT
|
11
11
|
p.id
|
12
12
|
,p.name
|
13
|
+
,p.detail_id
|
13
14
|
,d.work
|
14
15
|
FROM
|
15
16
|
player p
|
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,47 +6,33 @@
|
|
6
6
|
|
7
7
|
#ソース
|
8
8
|
```MyBatisMapper
|
9
|
-
<select id="selectItem"
|
9
|
+
<select id="selectItem" resultMap="PlayerDetailMap">
|
10
|
-
|
10
|
+
SELECT
|
11
11
|
p.id
|
12
12
|
,p.name
|
13
13
|
,d.work
|
14
|
-
|
14
|
+
FROM
|
15
15
|
player p
|
16
|
-
|
16
|
+
INNER JOIN
|
17
17
|
detail d
|
18
|
-
|
18
|
+
ON
|
19
19
|
p.detail_id=d.detail_id
|
20
|
-
|
20
|
+
WHERE
|
21
21
|
p.id=#{id}
|
22
22
|
</select>
|
23
23
|
|
24
24
|
<!-- テーブルのSELECT結果をどのようにマッピングするか指定 -->
|
25
|
-
|
25
|
+
<resultMap id="PlayerDetailMap" type="com.mybatis.test.domain.PlayerEntity">
|
26
26
|
<id property="id" column="id" />
|
27
27
|
<result property="name" column="name" />
|
28
28
|
<result property="detail_id" column="detail_id" />
|
29
|
-
<collection
|
29
|
+
<collection property="detailEntity" ofType="com.mybatis.test.domain.DetailEntity">
|
30
30
|
<result property="detail_id" column="detail_id" />
|
31
31
|
<result property="work" column="work" />
|
32
32
|
</collection>
|
33
33
|
</resultMap>
|
34
34
|
```
|
35
35
|
|
36
|
-
上記SQLでSELECTした結果を格納するためのエンティティクラスを作成。
|
37
|
-
|
38
|
-
```PlayerDetailEntity
|
39
|
-
@Entity
|
40
|
-
public class PlayerDetailEntity {
|
41
|
-
|
42
|
-
@Id
|
43
|
-
private String id;
|
44
|
-
private String name;
|
45
|
-
private String work;
|
46
|
-
ゲッター、セッター割愛
|
47
|
-
```
|
48
|
-
|
49
|
-
|
50
36
|
結合する2つの元となるエンティティクラスは以下。
|
51
37
|
|
52
38
|
```PlayerEntity
|
@@ -59,6 +45,7 @@
|
|
59
45
|
private String name;
|
60
46
|
private String age;
|
61
47
|
private String detail_id;
|
48
|
+
private List<DetailEntity> detailEntity;
|
62
49
|
```
|
63
50
|
|
64
51
|
```DetailEntity
|
1
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,7 +70,16 @@
|
|
70
70
|
private String work;
|
71
71
|
```
|
72
72
|
|
73
|
+
```Controller
|
74
|
+
@GetMapping()
|
75
|
+
public String index(Model model) {
|
76
|
+
PlayerDetailEntity playerDetailEntity = new PlayerDetailEntity();
|
77
|
+
playerDetailEntity = myBatisService.selectItem("001");
|
78
|
+
model.addAttribute("playerDetailEntity", playerDetailEntity);
|
79
|
+
return "index";
|
80
|
+
```
|
73
81
|
|
82
|
+
|
74
83
|
MyBatisMapper.xmlの記述が問題だと思われるのですが、
|
75
84
|
どこがイケナイのかわかりません。
|
76
85
|
ご教示お願い致します。
|