#やりたいこと
Spring + MyBatisでテーブル結合を実現したい。
#問題点
SQLのSELECT結果がnullで返却されること。
#ソース
schema
1DROP TABLE IF EXISTS detail CASCADE; 2DROP TABLE IF EXISTS player CASCADE; 3 4 5CREATE TABLE player 6( 7 id character NOT NULL , 8 name character varying(256), 9 age character varying(256), 10 detail_id character varying(256), 11 CONSTRAINT pkey PRIMARY KEY (id) 12); 13 14 15CREATE TABLE detail 16( 17 detail_id character NOT NULL , 18 work character varying(256), 19 CONSTRAINT ppkey PRIMARY KEY (detail_id) 20);
MyBatisMapper
1<select id="selectItem" resultMap="PlayerDetailMap"> 2 SELECT 3 p.id 4 ,p.name 5 ,d.work 6 FROM 7 player p 8 INNER JOIN 9 detail d 10 ON 11 p.detail_id=d.detail_id 12 WHERE 13 p.id=#{id} 14 </select> 15 16 <!-- テーブルのSELECT結果をどのようにマッピングするか指定 --> 17 <resultMap id="PlayerDetailMap" type="com.mybatis.test.domain.PlayerEntity"> 18 <id property="id" column="id" /> 19 <result property="name" column="name" /> 20 <collection property="detailEntity" ofType="com.mybatis.test.domain.DetailEntity"> 21 <result property="work" column="work" /> 22 </collection> 23 </resultMap>
結合する2つの元となるエンティティクラスは以下。
PlayerEntity
1@Entity 2public class PlayerEntity { 3 4 @Id 5 private String id; 6 7 private String name; 8 private String age; 9 private String detail_id; 10 @Transient 11 private List<DetailEntity> detailEntity;
DetailEntity
1@Entity 2public class DetailEntity { 3 4 @Id 5 private String detail_id; 6 private String work;
Controller
1@GetMapping() 2 public String index(Model model) { 3 PlayerDetailEntity playerDetailEntity = new PlayerDetailEntity(); 4 playerDetailEntity = myBatisService.selectItem("001"); 5 model.addAttribute("playerDetailEntity", playerDetailEntity); 6 return "index";
index
1<div th:object="${playerDetailEntity}"> 2 <div> 3 <label><b>名前</b></label> 4 <p th:text="*{name}"> 5 </div> 6 <div> 7 <label><b>仕事</b></label> 8 <p th:text="*{detailEntity.work}"> 9 </div> 10 </div>
MyBatisMapper.xmlの記述が問題だと思われるのですが、
どこがイケナイのかわかりません。
ご教示お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/28 11:36
2020/09/28 11:46
2020/09/28 11:49
2020/09/28 12:25
2020/09/28 12:30
2020/09/28 12:40
2020/09/28 13:09
2020/09/28 13:10
2020/09/28 23:18
2020/09/29 00:18
2020/09/29 11:48
2020/09/29 11:52
2020/09/29 12:06
2020/09/29 12:16
2020/09/29 13:00
2020/09/29 13:09
2020/09/29 13:12
2020/09/29 13:31
2020/09/29 13:33
2020/09/29 22:54
2020/09/30 02:04