質問編集履歴

1

コードを載せました。

2020/06/04 09:12

投稿

Ta-Jn
Ta-Jn

スコア11

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,736 @@
4
4
 
5
5
 
6
6
 
7
+ UserServiceでそれぞれの入力項目をそれぞれのオブジェクトに格納し
8
+
9
+ saveでそれぞれのスキーマに入力する予定でした。
10
+
11
+
12
+
7
13
  ネットを漁って2日が立ちますが、全くわからないので
8
14
 
9
15
  手法やサイトのリンクを教えていただければ幸いです。
16
+
17
+
18
+
19
+ ```ここに言語を入力
20
+
21
+ @Controller
22
+
23
+ public class UserController {
24
+
25
+
26
+
27
+ /**
28
+
29
+ * ユーザー情報 Service
30
+
31
+ */
32
+
33
+ @Autowired
34
+
35
+ UserService userService;
36
+
37
+
38
+
39
+ /**
40
+
41
+ * ユーザー新規登録画面を表示
42
+
43
+ * @param model Model
44
+
45
+ * @return ユーザー情報一覧画面
46
+
47
+ */
48
+
49
+ @RequestMapping(value = "/user/add", method = RequestMethod.GET)
50
+
51
+ public String displayAdd(Model model) {
52
+
53
+ model.addAttribute("userRequest", new UserRequest());
54
+
55
+ return "user/add";
56
+
57
+ }
58
+
59
+   @RequestMapping(value="/user/create", method=RequestMethod.POST)
60
+
61
+ public String create(@ModelAttribute UserRequest userRequest, Model model) {
62
+
63
+ // ユーザー情報の登録
64
+
65
+ userService.create(userRequest);
66
+
67
+ return "redirect:/user/list";
68
+
69
+ }
70
+
71
+ }
72
+
73
+ ```
74
+
75
+ ```ここに言語を入力
76
+
77
+ @Data
78
+
79
+ public class UserRequest implements Serializable {
80
+
81
+
82
+
83
+ /**
84
+
85
+ * 契約ID
86
+
87
+ */
88
+
89
+ private String contractId;
90
+
91
+
92
+
93
+ /**
94
+
95
+ * 会社名
96
+
97
+ */
98
+
99
+ private String company;
100
+
101
+
102
+
103
+ /**
104
+
105
+ * 店舗名
106
+
107
+ */
108
+
109
+ private String storeName;
110
+
111
+
112
+
113
+ /**
114
+
115
+ * フリガナ
116
+
117
+ */
118
+
119
+ private String furigana;
120
+
121
+ /**
122
+
123
+ * 導入経路
124
+
125
+ */
126
+
127
+ private String route;
128
+
129
+
130
+
131
+ /**
132
+
133
+ * アカウント発行日
134
+
135
+ */
136
+
137
+ private String account;
138
+
139
+
140
+
141
+ /**
142
+
143
+ * 支払い開始日
144
+
145
+ */
146
+
147
+ private String payStart;
148
+
149
+
150
+
151
+ /**
152
+
153
+ * プランID
154
+
155
+ */
156
+
157
+ private String planId;
158
+
159
+
160
+
161
+ /**
162
+
163
+ * 請求ID
164
+
165
+ */
166
+
167
+ private String billingId;
168
+
169
+
170
+
171
+ /**
172
+
173
+ * 請求方法
174
+
175
+ */
176
+
177
+ private String billingMethod;
178
+
179
+
180
+
181
+ /**
182
+
183
+ * 請求年月
184
+
185
+ */
186
+
187
+ private String billingData;
188
+
189
+
190
+
191
+ /**
192
+
193
+ * プラン詳細
194
+
195
+ */
196
+
197
+ private String planContents;
198
+
199
+
200
+
201
+ /**
202
+
203
+ * プランオプション
204
+
205
+ */
206
+
207
+ private String planOption;
208
+
209
+
210
+
211
+ /**
212
+
213
+ * ボリュームディスカウント
214
+
215
+ */
216
+
217
+ private String discount;
218
+
219
+
220
+
221
+ /**
222
+
223
+ * 有効アカウント
224
+
225
+ */
226
+
227
+ private String activeAccount;
228
+
229
+
230
+
231
+ /**
232
+
233
+ * 料金
234
+
235
+ */
236
+
237
+ private String price;
238
+
239
+
240
+
241
+
242
+
243
+ }
244
+
245
+
246
+
247
+ ```
248
+
249
+ ```ここに言語を入力
250
+
251
+ @Entity
252
+
253
+ @Table(name="billing_storedata")
254
+
255
+ public class BillingStore implements Serializable{
256
+
257
+
258
+
259
+ @Id
260
+
261
+ @Column(name="number_id")
262
+
263
+ @Getter
264
+
265
+ @Setter
266
+
267
+ private Long numberId;
268
+
269
+
270
+
271
+ @Column(name="billing_data")
272
+
273
+ @Getter
274
+
275
+ @Setter
276
+
277
+ private String billingData;
278
+
279
+
280
+
281
+ @Column(name="billing_method")
282
+
283
+ @Getter
284
+
285
+ @Setter
286
+
287
+ private String billingMethod;
288
+
289
+ }
290
+
291
+
292
+
293
+ ```
294
+
295
+ ```ここに言語を入力
296
+
297
+ @Data
298
+
299
+ @Entity
300
+
301
+ @Table(name="contractor_information")
302
+
303
+ public class Contractor implements Serializable{
304
+
305
+
306
+
307
+ @Id
308
+
309
+ @Column(name="number_id")
310
+
311
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
312
+
313
+ private String numberId;
314
+
315
+
316
+
317
+ @Column(name="contract_id")
318
+
319
+ private String contractId;
320
+
321
+
322
+
323
+ @Column(name="company")
324
+
325
+ private String company;
326
+
327
+
328
+
329
+ @Column(name="store_name")
330
+
331
+ private String storeName;
332
+
333
+
334
+
335
+ @Column(name="furigana")
336
+
337
+ private String furigana;
338
+
339
+
340
+
341
+ @Column(name="route")
342
+
343
+ private String route;
344
+
345
+
346
+
347
+ @Column(name="account")
348
+
349
+ private String account;
350
+
351
+
352
+
353
+ @Column(name="price")
354
+
355
+ private String price;
356
+
357
+
358
+
359
+ @Column(name="pay_start")
360
+
361
+ private String payStart;
362
+
363
+
364
+
365
+ @Column(name="plan_id")
366
+
367
+ private String planId;
368
+
369
+
370
+
371
+ @Column(name="billing_id")
372
+
373
+ private String billingId;
374
+
375
+
376
+
377
+
378
+
379
+ ```
380
+
381
+ ```ここに言語を入力
382
+
383
+ @Entity
384
+
385
+ @Table(name="plan_information")
386
+
387
+ public class PlanInformation implements Serializable{
388
+
389
+
390
+
391
+ @Id
392
+
393
+ @Column(name="plan_id")
394
+
395
+ @Getter
396
+
397
+ @Setter
398
+
399
+ private String planId;
400
+
401
+
402
+
403
+ @Column(name="plan_contents")
404
+
405
+ @Getter
406
+
407
+ @Setter
408
+
409
+ private String planContents;
410
+
411
+
412
+
413
+ @Column(name="plan_option")
414
+
415
+ @Getter
416
+
417
+ @Setter
418
+
419
+ private String planOption;
420
+
421
+
422
+
423
+ @Column(name="discount")
424
+
425
+ @Getter
426
+
427
+ @Setter
428
+
429
+ private String discount;
430
+
431
+
432
+
433
+ @Column(name="active_account")
434
+
435
+ @Getter
436
+
437
+ @Setter
438
+
439
+ private String activeAccount;
440
+
441
+
442
+
443
+ }
444
+
445
+
446
+
447
+ ```
448
+
449
+ ```ここに言語を入力
450
+
451
+ @Repository
452
+
453
+ public interface UserRepository extends JpaRepository<Contractor, Long> {}
454
+
455
+ ```
456
+
457
+ ```ここに言語を入力
458
+
459
+ @Service
460
+
461
+ @Transactional(rollbackOn = Exception.class)
462
+
463
+ public class UserService {
464
+
465
+
466
+
467
+ /**
468
+
469
+ * ユーザー情報 Repository
470
+
471
+ */
472
+
473
+ @Autowired
474
+
475
+ UserRepository userRepository;
476
+
477
+
478
+
479
+ /**
480
+
481
+ * ユーザー情報新規登録
482
+
483
+ * @param user ユーザー情報
484
+
485
+ */
486
+
487
+ public void create(UserRequest userRequest) {
488
+
489
+ userRepository.save(CreateUser(userRequest));
490
+
491
+ }
492
+
493
+
494
+
495
+ /**
496
+
497
+ * ユーザーTBLエンティティの生成
498
+
499
+ * @param userRequest ユーザー情報リクエストデータ
500
+
501
+ * @return ユーザーTBLエンティティ
502
+
503
+ */
504
+
505
+ private Contractor CreateUser(UserRequest userRequest) {
506
+
507
+ BillingData billingData = new BillingData();
508
+
509
+ BillingStore billingStore = new BillingStore();
510
+
511
+ Contractor contractor = new Contractor();
512
+
513
+ PlanInformation planInformation = new PlanInformation();
514
+
515
+
516
+
517
+ contractor.setContractId(userRequest.getContractId());
518
+
519
+ contractor.setCompany(userRequest.getCompany());
520
+
521
+ contractor.setStoreName(userRequest.getStoreName());
522
+
523
+ contractor.setFurigana(userRequest.getFurigana());
524
+
525
+ contractor.setRoute(userRequest.getRoute());
526
+
527
+ contractor.setAccount(userRequest.getAccount());
528
+
529
+ contractor.setPayStart(userRequest.getPayStart());
530
+
531
+ contractor.setPlanId(userRequest.getPlanId());
532
+
533
+ contractor.setBillingId(userRequest.getBillingId());
534
+
535
+ contractor.setPrice(userRequest.getPrice());
536
+
537
+ billingStore.setBillingMethod(userRequest.getBillingMethod());
538
+
539
+ billingStore.setBillingData(userRequest.getBillingData());
540
+
541
+ planInformation.setPlanContents(userRequest.getPlanContents());
542
+
543
+ planInformation.setPlanOption(userRequest.getPlanOption());
544
+
545
+ planInformation.setDiscount(userRequest.getDiscount());
546
+
547
+ planInformation.setActiveAccount(userRequest.getActiveAccount());
548
+
549
+ return contractor;
550
+
551
+ }
552
+
553
+ }
554
+
555
+ ```
556
+
557
+ ```ここに言語を入力
558
+
559
+ <body>
560
+
561
+ <h1>ユーザー新規登録</h1>
562
+
563
+ <form th:action="@{/user/create}" th:object="${userRequest}" method="post">
564
+
565
+ <table>
566
+
567
+ <tr>
568
+
569
+ <th class="cell_title">契約ID</th>
570
+
571
+ <th class="cell_required">※</th>
572
+
573
+ <td><input type="text" th:field="*{contractId}"></td>
574
+
575
+ </tr>
576
+
577
+ <tr>
578
+
579
+ <th class="cell_title">会社名</th>
580
+
581
+ <th class="cell_required"></th>
582
+
583
+ <td><input type="text" th:field="*{company}"></td>
584
+
585
+ </tr>
586
+
587
+ <tr>
588
+
589
+ <th class="cell_title">店舗名</th>
590
+
591
+ <th class="cell_required"></th>
592
+
593
+ <td><input type="text" th:field="*{storeName}"></td>
594
+
595
+ </tr>
596
+
597
+ <tr>
598
+
599
+ <th class="cell_title">フリガナ</th>
600
+
601
+ <th class="cell_required"></th>
602
+
603
+ <td><input type="text" th:field="*{furigana}"></td>
604
+
605
+ </tr>
606
+
607
+ <tr>
608
+
609
+ <th class="cell_title">導入経路</th>
610
+
611
+ <th class="cell_required"></th>
612
+
613
+ <td><input type="text" th:field="*{route}"></td>
614
+
615
+ </tr>
616
+
617
+ <tr>
618
+
619
+ <th class="cell_title">アカウント発行日</th>
620
+
621
+ <th class="cell_required"></th>
622
+
623
+ <td><input type="text" th:field="*{account}"></td>
624
+
625
+ </tr>
626
+
627
+ <tr>
628
+
629
+ <th class="cell_title">支払い開始日</th>
630
+
631
+ <th class="cell_required"></th>
632
+
633
+ <td><input type="text" th:field="*{payStart}"></td>
634
+
635
+ </tr>
636
+
637
+ <tr>
638
+
639
+ <th class="cell_title">プランID</th>
640
+
641
+
642
+
643
+ <th class="cell_required"></th>
644
+
645
+ <td><input type="text" th:field="*{planId}"></td>
646
+
647
+ </tr>
648
+
649
+ <tr>
650
+
651
+ <th class="cell_title">請求ID</th>
652
+
653
+ <th class="cell_required"></th>
654
+
655
+ <td><input type="text" th:field="*{billingId}"></td>
656
+
657
+ </tr>
658
+
659
+ <tr>
660
+
661
+ <th class="cell_title">請求方法</th>
662
+
663
+ <th class="cell_required"></th>
664
+
665
+ <td><input type="text" th:field="*{billingMethod}"></td>
666
+
667
+ </tr>
668
+
669
+ <tr>
670
+
671
+ <th class="cell_title">請求年月</th>
672
+
673
+ <th class="cell_required"></th>
674
+
675
+ <td><input type="text" th:field="*{billingData}"></td>
676
+
677
+ </tr>
678
+
679
+ <tr>
680
+
681
+ <th class="cell_title">プラン詳細</th>
682
+
683
+ <th class="cell_required"></th>
684
+
685
+ <td><input type="text" th:field="*{planContents}"></td>
686
+
687
+ </tr>
688
+
689
+ <tr>
690
+
691
+ <th class="cell_title">プランオプション</th>
692
+
693
+ <th class="cell_required"></th>
694
+
695
+ <td><input type="text" th:field="*{planOption}"></td>
696
+
697
+ </tr>
698
+
699
+ <tr>
700
+
701
+ <th class="cell_title">ボリュームディスカウント</th>
702
+
703
+ <th class="cell_required"></th>
704
+
705
+ <td><input type="text" th:field="*{discount}"></td>
706
+
707
+ </tr>
708
+
709
+ <tr>
710
+
711
+ <th class="cell_title">有効アカウント</th>
712
+
713
+ <th class="cell_required"></th>
714
+
715
+ <td><input type="text" th:field="*{activeAccount}"></td>
716
+
717
+ </tr>
718
+
719
+ <tr>
720
+
721
+ <th class="cell_title">料金</th>
722
+
723
+ <th class="cell_required"></th>
724
+
725
+ <td><input type="text" th:field="*{price}"></td>
726
+
727
+ </tr>
728
+
729
+ </table>
730
+
731
+ <div class="btn_area_center"><input type="submit" value="登録" class="btn"></div>
732
+
733
+ </form>
734
+
735
+ </body>
736
+
737
+ </html>
738
+
739
+ ```