(Spring Boot)Spring Bootで一連の流れ
前回MySQLのセットアップを行いました。
次は夢が詰まったDB接続です。
pom.xmlの設定
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
pom.xmlを右クリック、maven install
application.propertiesの設定
spring.jpa.hibernate.ddl-auto=none spring.datasource.url=jdbc:mysql://localhost:3306/test_db spring.datasource.username=root spring.datasource.password=password
イメージ
Contoroller ↔ Service ↔ Repository ↔ DB
戻りのデータは定石ではないかもしれませんがとりあえずPOJOにしました。
とりあえずコントローラから接続してみる(データはあらかじめあり)
Controller
@RestController @ResponseBody public class HelloController { @Autowired private HelloService service; @GetMapping("/findall") public ResponseEntity<List<HelloEntity>> findAll() { List<HelloEntity> list =service.findAll(); list.stream() .forEach(entity -> System.out.println(entity.getId() + ":" + entity.getName())); return ResponseEntity.ok(list); } }
Service
@Service public interface HelloService { public void hello(String message); public List<HelloEntity> findAll(); }
@Service public class HelloServiceImpl implements HelloService { @Override public void hello(String message) { System.out.println("Hello," + message); } @Autowired HelloRepository repository; public List<HelloEntity> findAll() { List<HelloEntity> entityList = repository.findAll(); return entityList; } }
Repository
public interface HelloRepository { public List<HelloEntity> findAll(); }
@Repository public class HelloRepositoryImpl implements HelloRepository { @Autowired JdbcTemplate dao; public List<HelloEntity> findAll() { List<Map<String, Object>> list = dao.queryForList("select id, name from users;"); List<HelloEntity> entityList =list.stream() .map(map -> HelloEntity.create((Integer) map.get("id"), (String) map.get("name"))) .collect(Collectors.toList()); return entityList; } }
Entity
import lombok.Getter; @Getter public final class HelloEntity { private HelloEntity(Integer id, String name) { this.id = id; this.name = name; }; public static HelloEntity create(Integer id, String name) { return new HelloEntity(id, name); } private Integer id; private String name; }
まとめ
SpringBootについて最初に書いたエントリから、ここまでのエントリでひとまず一連の処理ができるかなと。 しかし、DB接続はORMを使いたいですね。次回はORMとしてDomaを使って処理を作成したいと思います。(Domaしか使ったことないからですが…)