質問編集履歴

1

ああああああああああああああああああ

2022/05/17 11:12

投稿

wassan_nikoniko
wassan_nikoniko

スコア9

test CHANGED
@@ -1 +1 @@
1
- springboot+mybatis でDBから画像を取得する方法
1
+ ああああああああああああああああああ
test CHANGED
@@ -1,349 +1 @@
1
- ### 前提・実現したいこと
2
-
3
- 登録処理時にBase64でエンコードしてDBにセットしたblob型で定義してある画像を
4
-
5
- 一覧画面取得時にBase64デコードをして、エンティティに定義してあるString型変数に格納をして、一覧画面に表示したいです。
6
-
7
- ### 発生している問題・エラーメッセージ
8
-
9
- コントローラクラスにてproductInfoList変数でDBから値を取得しているのですが、ここで取得した値をBase64でデコードしてString変数に格納し、一覧画面に出力させる方法がわからないためご教授いただければ幸いです。。
10
-
11
- ### 該当のソースコード
12
-
13
- コントローラクラス
14
-
15
- ```
16
-
17
- @Controller
18
-
19
- public class ProductController {
20
-
21
- @Autowired
22
-
23
- ProductMapper productMapper;
24
-
25
- @Autowired
26
-
27
- ProductService productService;
28
-
29
-
30
-
31
- @GetMapping(value = "/product-list" )
32
-
33
- public String test(Model model) {
34
-
35
- List<ProductInfo> productInfoList = productMapper.getProductInfoList();
36
-
37
- int productInfocount = productMapper.getProductInfoCount();
38
-
39
- ProductInfo product =new ProductInfo();
40
-
41
- model.addAttribute("productcount", productInfocount);
42
-
43
- model.addAttribute("productInfo", productInfoList);
44
-
45
-
46
-
47
- return "product/list";
48
-
49
- }
50
-
51
-
52
-
53
- @GetMapping(value = "/product-registration")
54
-
55
- public String productregistration(@ModelAttribute ProductInfo productInfo) {
56
-
57
- return "product/registration";
58
-
59
- }
60
-
61
-
62
-
63
- @PostMapping(value="/product-registration")
64
-
65
- public String postproductregistration(@ModelAttribute ProductInfo productInfo) throws IOException {
66
-
67
- System.out.println(productInfo);
68
-
69
- productInfo.setProductImg(Base64.encodeBase64(productInfo.getMultiPartFile().getBytes()));
70
-
71
- System.out.println(productInfo.getProductImg());
72
-
73
- productService.insertProductInfo(productInfo);
74
-
75
- return "redirect:/product-list";
76
-
77
- }
78
-
79
- }
80
-
81
-
82
-
83
- ```
84
-
85
- エンティティクラス
86
-
87
- ```
88
-
89
- @Data
90
-
91
- public class ProductInfo implements Serializable {
92
-
93
-
94
-
95
- /** シリアルバージョンUID. */
96
-
97
- private static final long serialVersionUID = -2921497769927755763L;
98
-
99
-
100
-
101
- /** 商品ID*/
102
-
103
- private int productID;
104
-
105
-
106
-
107
- /** 商品名 */
108
-
109
- private String productName;
110
-
111
-
112
-
113
- /** ジャンル */
114
-
115
- private String genre;
116
-
117
-
118
-
119
- /** メーカー */
120
-
121
- private String maker;
122
-
123
-
124
-
125
- /** 商品価格 */
126
-
127
- private BigDecimal sellingPrice;
128
-
129
-
130
-
131
- /** 商品概要 */
132
-
133
- private String productDetail;
134
-
135
-
136
-
137
- /** 商品画像 */
138
-
139
- private byte[] productImg;
140
-
141
-
142
-
143
- /** 削除フラグ */
144
-
145
- private char DeleteFlg;
146
-
147
-
148
-
149
- /** 登録日時 */
150
-
151
- private String InsertDate;
152
-
153
-
154
-
155
- /** 更新日時 */
156
-
157
- private String UpdateDate;
158
-
159
-
160
-
161
- /** 商品画像 入力時 */
162
-
163
- private MultipartFile multiPartFile;
1
+ ああああああああああああああああああああああああああああああああああああ
164
-
165
-
166
-
167
- /**商品画像 表示時 */
168
-
169
- private String ProductImgOut;
170
-
171
- }
172
-
173
-
174
-
175
- ```
176
-
177
- mapperクラス
178
-
179
- ```
180
-
181
- @Mapper
182
-
183
- public interface ProductMapper {
184
-
185
- /**
186
-
187
- * @return a
188
-
189
- */
190
-
191
- List<ProductInfo> getProductInfoList();
192
-
193
-
194
-
195
- /**
196
-
197
- * @return a
198
-
199
- */
200
-
201
- int getProductInfoCount();
202
-
203
-
204
-
205
- public void insertProductInfo(ProductInfo productInfo);
206
-
207
-
208
-
209
- }
210
-
211
- ```
212
-
213
- XML
214
-
215
- ```
216
-
217
- <mapper namespace="cooking.repository.ProductMapper">
218
-
219
- <select id="getProductInfoList" resultType="cooking.entity.ProductInfo">
220
-
221
- SELECT
222
-
223
- ProductID,
224
-
225
- Genre,
226
-
227
- Maker,
228
-
229
- ProductName,
230
-
231
- SellingPrice,
232
-
233
- ProductImg
234
-
235
-
236
-
237
- FROM
238
-
239
- ProductInfo
240
-
241
-
242
-
243
- WHERE
244
-
245
- DeleteFlg = '0'
246
-
247
-
248
-
249
- ORDER BY
250
-
251
- ProductID ASC
252
-
253
- </select>
254
-
255
-
256
-
257
-
258
-
259
- <select id="getProductInfoCount" resultType="int">
260
-
261
- select count(*) from ProductInfo
262
-
263
- </select>
264
-
265
-
266
-
267
- <insert id="insertProductInfo" parameterType="cooking.entity.ProductInfo">
268
-
269
- INSERT INTO ProductInfo (
270
-
271
- ProductName,
272
-
273
- Genre,
274
-
275
- Maker,
276
-
277
- SellingPrice,
278
-
279
- ProductDetail,
280
-
281
- ProductImg,
282
-
283
- InsertDate,
284
-
285
- UpdateDate)
286
-
287
-
288
-
289
- VALUES (
290
-
291
- #{productName},
292
-
293
- #{genre},
294
-
295
- #{maker},
296
-
297
- #{sellingPrice},
298
-
299
- #{productDetail},
300
-
301
- #{productImg},
302
-
303
- CURRENT_TIMESTAMP(),
304
-
305
- CURRENT_TIMESTAMP())
306
-
307
- </insert>
308
-
309
- </mapper>
310
-
311
-
312
-
313
-
314
-
315
- ```
316
-
317
- ###DB構成
318
-
319
- +---------------+---------------+------+-----+---------+----------------+
320
-
321
- | Field | Type | Null | Key | Default | Extra |
322
-
323
- +---------------+---------------+------+-----+---------+----------------+
324
-
325
- | ProductID | int | NO | PRI | NULL | auto_increment |
326
-
327
- | ProductName | varchar(25) | NO | | NULL | |
328
-
329
- | Genre | char(2) | NO | | NULL | |
330
-
331
- | Maker | varchar(20) | NO | | NULL | |
332
-
333
- | SellingPrice | decimal(11,2) | NO | | NULL | |
334
-
335
- | ProductDetail | varchar(200) | YES | | NULL | |
336
-
337
- | ProductImg | mediumblob | YES | | NULL | |
338
-
339
- | DeleteFlg | char(1) | NO | | 0 | |
340
-
341
- | InsertDate | timestamp(3) | NO | | NULL | |
342
-
343
- | UpdateDate | timestamp(3) | NO | | NULL | |
344
-
345
- +---------------+---------------+------+-----+---------+----------------+
346
-
347
- ### 試したこと
348
-
349
- 様々なサイトなどをまわってDBから値を取得してその値をデコードするようなところが特になく、リファレンスなどを確認しましたがやり方がいまいちわからなかったため質問とさせていただきます。