はじめに
タイトルにAngularと書いていますが、今回はAngularのことは出てきません。
java側で各リクエストに応じたAPIを作ってきたのでご紹介します。
前提
従業員テーブルに対してCRUDになります。
id,nameをカラムに持っています。
APIのメソッド名は適当につけています。参考にしないでください。
各種API
取得
テーブルに存在するレコードを全て取得
// 取得
@GetMapping("api/getUserInfo")
public List<UserInfo> getHoge() {
List<Map<String,Object>> userInfoListMap;
List<UserInfo> userInfoList = new ArrayList<UserInfo>();
userInfoListMap = jdbcTemplate.queryForList("select id,name from userinfo");
for(Map<String,Object> map:userInfoListMap) {
UserInfo info = new UserInfo();
info.setId((int) map.get("id"));
info.setName((String) map.get("name"));
userInfoList.add(info);
}
return userInfoList;
}
1件取得
クエリパラメータでidが渡ってきます。api/getUser?id=i
// 1件取得
@GetMapping("api/getUser")
public UserInfo getPiyo(@RequestParam("id") String id) {
UserInfo userinfo = new UserInfo();
Map<String,Object> result = jdbcTemplate.queryForMap("select id,name from userinfo where id = ?",id);
userinfo.setId((int) result.get("id"));
userinfo.setName((String) result.get("name"));
return userinfo;
}
条件に一致するレコードリストを取得
// 従業員名称で検索
@GetMapping("api/searchUser")
public List<UserInfo> searchUser(@RequestParam("name") String name) {
List<Map<String,Object>> userInfoListMap;
System.out.println(name);
List<UserInfo> userInfoList = new ArrayList<UserInfo>();
userInfoListMap = jdbcTemplate.queryForList("select id,name from userinfo where name like " + "'" + name + "%'");
for(Map<String,Object> map:userInfoListMap) {
UserInfo info = new UserInfo();
info.setId((int) map.get("id"));
info.setName((String) map.get("name"));
userInfoList.add(info);
}
return userInfoList;
}
更新
こちらは、リクエストボディにデータがセットされてきます。
// 更新
@PutMapping("api/updateUser")
public int getFuga(@RequestBody UserInfo userinfo) {
int rowNumber = jdbcTemplate.update("UPDATE userinfo"
+ " SET"
+ " name = ?"
+ " WHERE id = ?",
userinfo.getName(),
userinfo.getId());
return rowNumber;
}
登録
//1件登録
@PostMapping("api/addUser")
public UserInfo getFugaFuga(@RequestBody UserInfo newUserinfo) {
Map<String,Object> result = jdbcTemplate.queryForMap("select max(id) id from userinfo");
int maxId = (int)result.get("id");
newUserinfo.setId(++maxId);
System.out.println(newUserinfo.getId());
int rowNumber = jdbcTemplate.update("INSERT INTO userinfo(id,"+ " name)" + " VALUES(?, ?)",
newUserinfo.getId(),
newUserinfo.getName());
return newUserinfo;
}
削除
// 1件削除
@DeleteMapping("api/deleteUser")
public int getFugaPiyo(@RequestParam("id") String id) {
int rowNumber = jdbcTemplate.update("DELETE FROM userinfo WHERE id = ?", id);
return rowNumber;
}
最後に
メソッド上部にHTTPリクエストに応じたアノテーションがついています。
各リクエストメソッドについては以下を参照ください。
参照:GET
登録:POST
更新:PUT
削除:DELETE