Skip to content

Commit 56fc437

Browse files
committed
Add using NamedJdbc
1 parent ca553dd commit 56fc437

File tree

2 files changed

+196
-1
lines changed

2 files changed

+196
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
package com.example.demo.domain.model.repository.jdbc;
2+
3+
import java.util.ArrayList;
4+
import java.util.Date;
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
10+
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
11+
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
12+
import org.springframework.stereotype.Repository;
13+
14+
import com.example.demo.domain.model.User;
15+
import com.example.demo.domain.model.repository.UserDao;
16+
17+
18+
@Repository("UserDaoNamedJdbcImpl")
19+
public class UserDaoNamedJdbcImpl implements UserDao {
20+
21+
@Autowired
22+
private NamedParameterJdbcTemplate jdbc;
23+
24+
// Userテーブルの件数を取得
25+
@Override
26+
public int count() {
27+
// SQL文
28+
String sql = "SELECT COUNT(*) FROM m_user";
29+
30+
// パラメータ生成
31+
SqlParameterSource params = new MapSqlParameterSource();
32+
33+
// 全件取得してカウント
34+
return jdbc.queryForObject(sql, params, Integer.class);
35+
}
36+
37+
// Userテーブルにデータを1件insert
38+
@Override
39+
public int insertOne(User user) {
40+
// SQL文
41+
String sql = "INSERT INTO m_user(user_id,"
42+
+ "password,"
43+
+ "user_name,"
44+
+ "birthday,"
45+
+ "age,"
46+
+ "marriage,"
47+
+ "role)"
48+
+ " VALUES(:userId,"
49+
+ ":password,"
50+
+ ":userName,"
51+
+ ":birthday,"
52+
+ ":age,"
53+
+ ":marriage,"
54+
+ ":role)";
55+
56+
// パラメータ
57+
SqlParameterSource params = new MapSqlParameterSource()
58+
.addValue("userId", user.getUserId())
59+
.addValue("password", user.getPassword())
60+
.addValue("userName", user.getUserName())
61+
.addValue("birthday", user.getBirthday())
62+
.addValue("age", user.getAge())
63+
.addValue("marriage", user.isMarriage())
64+
.addValue("role", user.getRole());
65+
66+
// SQL実行
67+
return jdbc.update(sql, params);
68+
}
69+
70+
// Userテーブルのデータを1件取得
71+
@Override
72+
public User selectOne(String userId) {
73+
// SQL文
74+
String sql = "SELECT * FROM m_user WHERE user_id = :userId";
75+
76+
// パラメータ
77+
SqlParameterSource params = new MapSqlParameterSource()
78+
.addValue("userId", userId);
79+
80+
// SQL実行
81+
Map<String, Object> map = jdbc.queryForMap(sql, params);
82+
83+
// 結果返却用のインスタンスを生成
84+
User user = new User();
85+
86+
// 取得データをインスタンスにセット
87+
user.setUserId((String)map.get("user_id"));
88+
user.setPassword((String)map.get("password"));
89+
user.setUserName((String)map.get("user_name"));
90+
user.setBirthday((Date)map.get("birthday"));
91+
user.setAge((Integer)map.get("age"));
92+
user.setMarriage((Boolean)map.get("marriage"));
93+
user.setRole((String)map.get("role"));
94+
95+
return user;
96+
}
97+
98+
// Userテーブルの全データを取得
99+
@Override
100+
public List<User> selectMany() {
101+
// SQL文
102+
String sql = "SELECT * FROM m_user";
103+
104+
// パラメータ
105+
SqlParameterSource params = new MapSqlParameterSource();
106+
107+
// SQL実行
108+
List<Map<String, Object>> getList = jdbc.queryForList(sql, params);
109+
110+
// 結果返却用のList
111+
List<User> userList = new ArrayList<>();
112+
113+
// 取得データ分loop
114+
for(Map<String, Object> map : getList) {
115+
// Userインスタンスの生成
116+
User user = new User();
117+
118+
// Userインスタンスに取得したデータをセットする
119+
// ユーザーID
120+
user.setUserId((String)map.get("user_id"));
121+
// パスワード
122+
user.setPassword((String)map.get("password"));
123+
// ユーザー名
124+
user.setUserName((String)map.get("user_name"));
125+
// 誕生日
126+
user.setBirthday((Date)map.get("birthday"));
127+
// 年齢
128+
user.setAge((Integer)map.get("age"));
129+
// 結婚ステータス
130+
user.setMarriage((Boolean)map.get("marriage"));
131+
// ロール
132+
user.setRole((String)map.get("role"));
133+
134+
// Listに追加
135+
userList.add(user);
136+
}
137+
138+
return userList;
139+
}
140+
141+
// Userテーブルを1件更新
142+
@Override
143+
public int updateOne(User user) {
144+
// SQL文
145+
String sql = "UPDATE M_USER"
146+
+ " SET"
147+
+ " password = :password,"
148+
+ " user_name = :userName,"
149+
+ " birthday = :birthday,"
150+
+ " age = :age,"
151+
+ " marriage = :marriage,"
152+
+ " WHERE user_id = :userId";
153+
154+
// パラメータ
155+
SqlParameterSource params = new MapSqlParameterSource()
156+
.addValue("userId", user.getUserId())
157+
.addValue("password", user.getPassword())
158+
.addValue("userName", user.getUserName())
159+
.addValue("birthday", user.getBirthday())
160+
.addValue("age", user.getAge())
161+
.addValue("marriage", user.isMarriage());
162+
163+
// SQL実行
164+
return jdbc.update(sql, params);
165+
}
166+
167+
// Userテーブルを1件削除
168+
@Override
169+
public int deleteOne(String userId) {
170+
// SQL文
171+
String sql = "DELETE FROM m_user WHERE user_id = :userId";
172+
173+
// パラメータ
174+
SqlParameterSource params = new MapSqlParameterSource()
175+
.addValue("userId", userId);
176+
177+
// SQL実行
178+
int rowNumber = jdbc.update(sql, params);
179+
180+
return rowNumber;
181+
}
182+
183+
// SQL取得結果をサーバーにCSVで保存
184+
@Override
185+
public void userCsvOut() {
186+
// M_USERテーブルのデータを全件取得するSQL
187+
String sql = "SELECT * FROM m_user";
188+
189+
// ResultSetExtractorの生成
190+
UserRowCallbackHandler handler = new UserRowCallbackHandler();
191+
192+
// クエリ実行
193+
jdbc.query(sql, handler);
194+
}
195+
}

src/main/java/com/example/demo/domain/service/UserService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
@Service
2020
public class UserService {
2121
@Autowired
22-
@Qualifier("UserDaoJdbcImpl")
22+
@Qualifier("UserDaoNamedJdbcImpl")
2323
UserDao dao;
2424

2525
// insert用メソッド

0 commit comments

Comments
 (0)