SpringBoot에서 그룹웨어 개발 ③ ~DB 연결 계속~
18433 단어 SpringBootMySQL8.0도커MyBatis
DB 연결 계속
지난번 그리고 DB 접속을 하고, 신규 등록까지 만들려고 했습니다만, 거기까지 가지 않았기 때문에 계속을 해 갑니다!
우선 여기까지 빌드 & 실행할 수 있는지 확인
build.gradle을 편집했을 때에 자동으로 클래스 패스의 로드를 할까의 다이얼로그가 오른쪽 하단에 나왔으므로, 자동으로 읽어들일 설정으로 했습니다.
벌레 마크의 디버그 메뉴를 열면 처음 디버그의 경우 launch.json을 만드는 버튼이 있으므로 launch.json을 만듭니다.
디버그 메뉴에서 DemoAppcation으로 시작할 수 있으므로 디버깅을 시작합니다!
우선 실행은 할 수 있었다.
MyBatis로 매핑
jpa라든지의 선택사항도 있지만, SQL을 쓰는 현장이 많을 것 같기 때문에 MyBatis로 매핑하기로 했다.
build.gradle
build.gradle의 dependencies 내에 다음을 추가. mybatis는 버전 지정하지 않으면 읽어 주지 않으므로 mvnrepository 에서 원하는 버전을 조사하여 지정한다. 이번에는 2.1.1.
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'
매퍼 만들기
UserMapper.javapackage パッケージ名.プロジェクト名.domain.repository;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import rsrepo.groupware.mygroupware.domain.model.User;
@Mapper
public interface UserMapper {
// 登録用メソッド
@Insert("INSERT INTO users ( name, password, role ) VALUES ( #{name}, #{password}, #{role} )")
public boolean insert(User user);
// 1件検索用メソッド
@Select("SELECT id, name, password, role, updated_at FROM users WHERE name = #{name} AND password = #{password}")
public User selectOne(String userId);
// 全件検索用メソッド
@Select("SELECT id, name, password, role, updated_at FROM users")
public List<User> selectMany();
// 1件更新用メソッド
@Update("UPDATE users SET name = #{name}, password = #{password}, role = #{role} WHERE id = #{id}")
public boolean updateOne(User user);
// 1件削除用メソッド
@Delete("DELETE FROM users WHERE id = #{id}")
public boolean deleteOne(String userId);
}
서비스 만들기
UserService.javapackage パッケージ名.プロジェクト名.domain.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import rsrepo.groupware.mygroupware.domain.model.User;
import rsrepo.groupware.mygroupware.domain.repository.UserMapper;
@Transactional
@Service
public class UserService {
@Autowired
UserMapper userMapper;
// 登録用メソッド
public boolean insert(User user) {
return userMapper.insert(user);
}
// 1件検索用メソッド
public User selectOne(String id) {
return userMapper.selectOne(id);
}
// 全件検索用メソッド
public List<User> selectMany() {
return userMapper.selectMany();
}
// 1件更新用メソッド
public boolean update(User user) {
return userMapper.updateOne(user);
}
// 1件削除用メソッド
public boolean delete(String id) {
return userMapper.deleteOne(id);
}
}
컨트롤러 만들기
UserController.javapackage パッケージ名.プロジェクト名.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import rsrepo.groupware.mygroupware.domain.model.User;
import rsrepo.groupware.mygroupware.domain.service.UserService;
@RestController
public class UserController {
@Autowired
UserService service;
// ユーザー全件取得
@GetMapping("/user/get")
public List<User> getUserMany() {
// ユーザー全件取得
return service.selectMany();
}
// ユーザー1件取得
@GetMapping("/user/get/{id}")
public User getUserOne(@PathVariable("id") String userId) {
// ユーザー1件取得
return service.selectOne(userId);
}
// ユーザーを1件登録
@PostMapping("/user/insert")
public String putUserOne(@RequestBody User user) {
boolean result = service.insert(user);
String str = "";
if (result) {
str = "{\"result\":\"ok\"}";
} else {
str = "{\"result\":\"error\"}";
}
// 結果用の文字列をリターン
return str;
}
// ユーザーを1件更新
@PutMapping("/user/update")
public String postUserOne(@RequestBody User user) {
boolean result = service.update(user);
String str = "";
if (result) {
str = "{\"result\":\"ok\"}";
} else {
str = "{\"result\":\"error\"}";
}
// 結果用の文字列をリターン
return str;
}
// ユーザーを1件削除
@DeleteMapping("/user/delete/{id:.+}")
public String deleteUserOne(@PathVariable("id") String userId) {
boolean result = service.delete(userId);
String str = "";
if (result) {
str = "{\"result\":\"ok\"}";
} else {
str = "{\"result\":\"error\"}";
}
// 結果用の文字列をリターン
return str;
}
}
연결 확인
Docker MySQL을 시작하고 테스트 데이터를 넣습니다.
INSERT INTO users ( name, password, role ) VALUES ( "test", "test", "ROLE_ADMIN" );
SpringBoot 실행 → http://localhost:8080/user/get 방문.
[{"id":"1","name":"test","password":"test","role":"ROLE_ADMIN","updated_at":"2020-01-22T12:17:56.000+0000"}]
json에서 데이터가 반환됩니다.
끝에
드디어 DB 접속이 완료되었으므로, 다음 번에는 로그인 기능을 완성시키는 것을 목표로 진행해 나가려고 생각합니다!
SpringBoot에서 그룹웨어 개발 ②~DB 연결~
GitHub:MyGroupware
Reference
이 문제에 관하여(SpringBoot에서 그룹웨어 개발 ③ ~DB 연결 계속~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r_saiki/items/fa5e9d7a10013ec996fa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'
package パッケージ名.プロジェクト名.domain.repository;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import rsrepo.groupware.mygroupware.domain.model.User;
@Mapper
public interface UserMapper {
// 登録用メソッド
@Insert("INSERT INTO users ( name, password, role ) VALUES ( #{name}, #{password}, #{role} )")
public boolean insert(User user);
// 1件検索用メソッド
@Select("SELECT id, name, password, role, updated_at FROM users WHERE name = #{name} AND password = #{password}")
public User selectOne(String userId);
// 全件検索用メソッド
@Select("SELECT id, name, password, role, updated_at FROM users")
public List<User> selectMany();
// 1件更新用メソッド
@Update("UPDATE users SET name = #{name}, password = #{password}, role = #{role} WHERE id = #{id}")
public boolean updateOne(User user);
// 1件削除用メソッド
@Delete("DELETE FROM users WHERE id = #{id}")
public boolean deleteOne(String userId);
}
package パッケージ名.プロジェクト名.domain.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import rsrepo.groupware.mygroupware.domain.model.User;
import rsrepo.groupware.mygroupware.domain.repository.UserMapper;
@Transactional
@Service
public class UserService {
@Autowired
UserMapper userMapper;
// 登録用メソッド
public boolean insert(User user) {
return userMapper.insert(user);
}
// 1件検索用メソッド
public User selectOne(String id) {
return userMapper.selectOne(id);
}
// 全件検索用メソッド
public List<User> selectMany() {
return userMapper.selectMany();
}
// 1件更新用メソッド
public boolean update(User user) {
return userMapper.updateOne(user);
}
// 1件削除用メソッド
public boolean delete(String id) {
return userMapper.deleteOne(id);
}
}
package パッケージ名.プロジェクト名.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import rsrepo.groupware.mygroupware.domain.model.User;
import rsrepo.groupware.mygroupware.domain.service.UserService;
@RestController
public class UserController {
@Autowired
UserService service;
// ユーザー全件取得
@GetMapping("/user/get")
public List<User> getUserMany() {
// ユーザー全件取得
return service.selectMany();
}
// ユーザー1件取得
@GetMapping("/user/get/{id}")
public User getUserOne(@PathVariable("id") String userId) {
// ユーザー1件取得
return service.selectOne(userId);
}
// ユーザーを1件登録
@PostMapping("/user/insert")
public String putUserOne(@RequestBody User user) {
boolean result = service.insert(user);
String str = "";
if (result) {
str = "{\"result\":\"ok\"}";
} else {
str = "{\"result\":\"error\"}";
}
// 結果用の文字列をリターン
return str;
}
// ユーザーを1件更新
@PutMapping("/user/update")
public String postUserOne(@RequestBody User user) {
boolean result = service.update(user);
String str = "";
if (result) {
str = "{\"result\":\"ok\"}";
} else {
str = "{\"result\":\"error\"}";
}
// 結果用の文字列をリターン
return str;
}
// ユーザーを1件削除
@DeleteMapping("/user/delete/{id:.+}")
public String deleteUserOne(@PathVariable("id") String userId) {
boolean result = service.delete(userId);
String str = "";
if (result) {
str = "{\"result\":\"ok\"}";
} else {
str = "{\"result\":\"error\"}";
}
// 結果用の文字列をリターン
return str;
}
}
INSERT INTO users ( name, password, role ) VALUES ( "test", "test", "ROLE_ADMIN" );
[{"id":"1","name":"test","password":"test","role":"ROLE_ADMIN","updated_at":"2020-01-22T12:17:56.000+0000"}]
Reference
이 문제에 관하여(SpringBoot에서 그룹웨어 개발 ③ ~DB 연결 계속~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r_saiki/items/fa5e9d7a10013ec996fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)