質問編集履歴

2

package文の修正

2022/01/28 04:42

投稿

sukesukesuke
sukesukesuke

スコア73

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```java
40
40
 
41
- package jp.co.careritz.sandbox.dao;
41
+ package jp.co.sandbox.dao;
42
42
 
43
43
  import java.util.List;
44
44
  import org.apache.commons.lang3.StringUtils;

1

ソースを追加しました

2022/01/28 00:54

投稿

sukesukesuke
sukesukesuke

スコア73

test CHANGED
File without changes
test CHANGED
@@ -33,3 +33,228 @@
33
33
  return namedParameterJdbcTemplate.query(sb.toString(), ps, rm);
34
34
 
35
35
  ```
36
+
37
+ ソースはこちら
38
+
39
+ ```java
40
+
41
+ package jp.co.careritz.sandbox.dao;
42
+
43
+ import java.util.List;
44
+ import org.apache.commons.lang3.StringUtils;
45
+ import org.springframework.beans.factory.annotation.Autowired;
46
+ import org.springframework.jdbc.core.BeanPropertyRowMapper;
47
+ import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
48
+ import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
49
+ import org.springframework.stereotype.Repository;
50
+ import jp.co.careritz.sandbox.dto.WebboardDto;
51
+
52
+ /**
53
+ * 掲示板DAO.
54
+ *
55
+ * @author ryosuke.tahara
56
+ */
57
+
58
+ @Repository
59
+ public class WebboardDao {
60
+
61
+ /**
62
+ * NamedParameterJdbcTemplateクラスのインスタンスを宣言
63
+ */
64
+
65
+ private NamedParameterJdbcTemplate np;
66
+
67
+ /**
68
+ * コンストラクタ
69
+ *
70
+ * @param np NamedParameterJdbcTemplate
71
+ */
72
+
73
+ @Autowired
74
+ public WebboardDao(NamedParameterJdbcTemplate np) {
75
+ this.np = np;
76
+ }
77
+
78
+ /**
79
+ * 全投稿取得
80
+ *
81
+ * @return 全投稿
82
+ */
83
+
84
+ public List<WebboardDto> select() {
85
+
86
+ var sb = new StringBuilder();
87
+
88
+ sb.append("SELECT ");
89
+ sb.append(" ID ");
90
+ sb.append(" , NAME ");
91
+ sb.append(" , MESSAGE ");
92
+ sb.append(" , CREATED_ID ");
93
+ sb.append(" , CREATED_AT ");
94
+ sb.append(" , UPDATED_ID ");
95
+ sb.append(" , UPDATED_AT ");
96
+ sb.append("FROM ");
97
+ sb.append(" MESSAGE_BOARD ");
98
+ sb.append("WHERE ");
99
+ sb.append(" DELETE_FLAG = 0 ");
100
+ sb.append("ORDER BY ");
101
+ sb.append(" ID DESC ");
102
+ BeanPropertyRowMapper<WebboardDto> rm = BeanPropertyRowMapper.newInstance(WebboardDto.class);
103
+
104
+ return np.query(sb.toString(), rm);
105
+ }
106
+
107
+ /**
108
+ * 投稿取得(id指定)
109
+ *
110
+ * @param id 取得対象のidをServiceクラスから受け取っています
111
+ * @return 取得対象の投稿
112
+ */
113
+
114
+ public WebboardDto selectById(int id) {
115
+
116
+ var sb = new StringBuilder();
117
+
118
+ sb.append("SELECT ");
119
+ sb.append(" ID ");
120
+ sb.append(" , NAME ");
121
+ sb.append(" , MESSAGE ");
122
+ sb.append(" , CREATED_ID ");
123
+ sb.append(" , CREATED_AT ");
124
+ sb.append(" , UPDATED_ID ");
125
+ sb.append(" , UPDATED_AT ");
126
+ sb.append("FROM ");
127
+ sb.append(" MESSAGE_BOARD ");
128
+ sb.append("WHERE ");
129
+ sb.append(" ID = :id ");
130
+
131
+ // バインド用のインスタンスを生成します
132
+ var ps = new MapSqlParameterSource();
133
+ ps.addValue("id", id);
134
+
135
+ BeanPropertyRowMapper<WebboardDto> rm = BeanPropertyRowMapper.newInstance(WebboardDto.class);
136
+
137
+ return np.queryForObject(sb.toString(), ps, rm);
138
+
139
+ }
140
+
141
+ /**
142
+ * 投稿取得(id, name, editName, message指定)
143
+ *
144
+ * @param id 取得したい投稿のid情報をServiceクラスから受け取っています
145
+ * @param name 取得したい投稿のname情報をServiceクラスから受け取っています
146
+ * @param editName 取得したい投稿のeditName情報をServiceクラスから受け取っています
147
+ * @param message 取得したい投稿のmessage情報をServiceクラスから受け取っています
148
+ * @return 取得対象の投稿
149
+ */
150
+
151
+ public List<WebboardDto> selectBySearch(String id, String name, String editName, String message) {
152
+
153
+ var sb = new StringBuilder();
154
+ sb.append("SELECT ");
155
+ sb.append(" * ");
156
+ sb.append("FROM ");
157
+ sb.append(" MESSAGE_BOARD ");
158
+ sb.append("WHERE ");
159
+ sb.append(" ID = :id ");
160
+ sb.append(" AND CREATED_ID = :name ");
161
+ sb.append(" AND NAME = :editName ");
162
+ sb.append(" AND MESSAGE LIKE :message ");
163
+ sb.append(" AND DELETE_FLAG = 0 ");
164
+ sb.append("ORDER BY ");
165
+ sb.append(" ID DESC ");
166
+
167
+ // バインド用のインスタンスを生成します
168
+ var ps = new MapSqlParameterSource();
169
+ ps.addValue("id", StringUtils.isNotBlank(id) ? id : "ID");
170
+ ps.addValue("name", StringUtils.isNotBlank(name) ? name : "CREATED_ID");
171
+ ps.addValue("editName", StringUtils.isNotBlank(editName) ? editName : "NAME");
172
+ ps.addValue("message", StringUtils.isNotBlank(message) ? "%" + message + "%" : "MESSAGE");
173
+
174
+ BeanPropertyRowMapper<WebboardDto> rm = BeanPropertyRowMapper.newInstance(WebboardDto.class);
175
+
176
+ return np.query(sb.toString(), ps, rm);
177
+
178
+ }
179
+
180
+ /**
181
+ * 新規投稿処理
182
+ *
183
+ * @param name 入力されたnameをServiceクラスから受け取っています
184
+ * @param message 入力されたmessageをServiceクラスから受け取っています
185
+ */
186
+
187
+ public void post(String name, String message) {
188
+
189
+ var sb = new StringBuilder();
190
+ sb.append("INSERT ");
191
+ sb.append("INTO MESSAGE_BOARD( ");
192
+ sb.append(" NAME ");
193
+ sb.append(" , MESSAGE ");
194
+ sb.append(" , DELETE_FLAG ");
195
+ sb.append(" , CREATED_ID ");
196
+ sb.append(" , CREATED_AT ");
197
+ sb.append(" , UPDATED_ID ");
198
+ sb.append(" , UPDATED_AT ");
199
+ sb.append(") ");
200
+ sb.append("VALUES (:name, :message, 0, :name, NOW(), :name, NOW()) ");
201
+
202
+ // バインド用のインスタンスを生成します
203
+ var ps = new MapSqlParameterSource();
204
+ ps.addValue("name", name);
205
+ ps.addValue("message", message);
206
+
207
+ // バインド後、SQLを実行します
208
+ np.update(sb.toString(), ps);
209
+ }
210
+
211
+ /**
212
+ * 削除処理
213
+ *
214
+ * @param id 削除対象のidをServiceクラスから受け取っています
215
+ */
216
+
217
+ public void delete(int id) {
218
+
219
+ var sb = new StringBuilder();
220
+ sb.append("UPDATE MESSAGE_BOARD ");
221
+ sb.append("SET ");
222
+ sb.append(" DELETE_FLAG = 1 ");
223
+ sb.append("WHERE ");
224
+ sb.append(" ID = :id ");
225
+
226
+ var ps = new MapSqlParameterSource();
227
+ ps.addValue("id", id);
228
+
229
+ np.update(sb.toString(), ps);
230
+ }
231
+
232
+ /**
233
+ * 編集処理
234
+ *
235
+ * @param id 編集対象のidをServiceクラスから受け取っています
236
+ * @param name 編集後のnameをServiceクラスから受け取っています
237
+ * @param message 編集後のmessagをServiceクラスから受け取っています
238
+ */
239
+
240
+ public void edit(int id, String name, String message) {
241
+ var sb = new StringBuilder();
242
+ sb.append("UPDATE MESSAGE_BOARD ");
243
+ sb.append("SET ");
244
+ sb.append(" NAME = :name ");
245
+ sb.append(" , UPDATED_ID = :name ");
246
+ sb.append(" , MESSAGE = :message ");
247
+ sb.append(" , UPDATED_AT = NOW() ");
248
+ sb.append("WHERE ");
249
+ sb.append(" ID = :id ");
250
+
251
+ var ps = new MapSqlParameterSource();
252
+ ps.addValue("id", id);
253
+ ps.addValue("name", name);
254
+ ps.addValue("message", message);
255
+
256
+ np.update(sb.toString(), ps);
257
+ }
258
+ }
259
+
260
+ ```