teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

修正

2020/09/28 13:08

投稿

box_908
box_908

スコア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

修正

2020/09/28 13:08

投稿

box_908
box_908

スコア5

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

修正

2020/09/28 12:29

投稿

box_908
box_908

スコア5

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

修正

2020/09/28 11:48

投稿

box_908
box_908

スコア5

title CHANGED
File without changes
body CHANGED
@@ -6,47 +6,33 @@
6
6
 
7
7
  #ソース
8
8
  ```MyBatisMapper
9
- <select id="selectItem" parameterType="string" resultMap="PlayerDetailMap">
9
+ <select id="selectItem" resultMap="PlayerDetailMap">
10
- select
10
+ SELECT
11
11
  p.id
12
12
  ,p.name
13
13
  ,d.work
14
- from
14
+ FROM
15
15
  player p
16
- inner join
16
+ INNER JOIN
17
17
  detail d
18
- on
18
+ ON
19
19
  p.detail_id=d.detail_id
20
- where
20
+ WHERE
21
21
  p.id=#{id}
22
22
  </select>
23
23
 
24
24
  <!-- テーブルのSELECT結果をどのようにマッピングするか指定 -->
25
- <resultMap id="PlayerDetailMap" type="com.mybatis.test.domain.PlayerDetailEntity">
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 property="detail" ofType="com.mybatis.test.domain.DetailEntity">
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

修正

2020/09/28 11:34

投稿

box_908
box_908

スコア5

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
  ご教示お願い致します。