Springフレームワークを使用し、DBから値を取得するプログラムを書いています。
以下がソースコードの抜粋です。
Java
1package com.example.demo.trySpring; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.stereotype.Controller; 5import org.springframework.ui.Model; 6import org.springframework.web.bind.annotation.GetMapping; 7import org.springframework.web.bind.annotation.PostMapping; 8import org.springframework.web.bind.annotation.RequestParam; 9 10@Controller 11public class HelloController { 12 @Autowired 13 private HelloService helloService; 14 15 @GetMapping("/hello") 16 public String getHello() { 17 return "hello"; 18 } 19 20 @PostMapping("/hello/db") 21 public String postDbRequest(@RequestParam("text2")String str, Model model) { 22 int id = Integer.parseInt(str); 23 24 Employee employee = helloService.findOne(id); 25 26 model.addAttribute("id", employee.getEmployeeId()); 27 model.addAttribute("name", employee.getEmployeeName()); 28 model.addAttribute("age", employee.getAge()); 29 30 return "helloResponseDB"; 31 } 32 33}
Java
1package com.example.demo.trySpring; 2 3import lombok.Data; 4 5@Data 6public class Employee { 7 private int employeeId; 8 private String employeeName; 9 private int age; 10 11}
Java
1package com.example.demo.trySpring; 2 3import java.util.Map; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Service; 7 8@Service 9public class HelloService { 10 @Autowired 11 private HelloRepository helloRepository; 12 13 public Employee findOne(int id) { 14 Map<String, Object> map = helloRepository.findOne(id); 15 16 int employeeId = (Integer)map.get("employee_id"); 17 String employeeName = (String)map.get("employee_name"); 18 int age = (Integer)map.get("age"); 19 20 Employee employee = new Employee(); 21 employee.setEmployeeId(employeeId); 22 employee.setEmployeeName(employeeName); 23 employee.setAge(age); 24 25 return employee; 26 } 27}
Java
1package com.example.demo.trySpring; 2 3import java.util.Map; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.jdbc.core.JdbcTemplate; 7import org.springframework.stereotype.Repository; 8 9@Repository 10public class HelloRepository { 11 @Autowired 12 private JdbcTemplate jdbcTemplate; 13 14 public Map<String, Object> findOne(int id){ 15 String query = "SELECT " 16 + " employee_id," 17 + " employee_name," 18 + " age " 19 + "FROM employee " 20 + "WHERE employee_id=?"; 21 22 Map<String, Object> employee = jdbcTemplate.queryForMap(query, id); 23 24 return employee; 25 } 26} 27
分からないのは、HelloControllerクラスの
Employee employee = helloService.findOne(id);
ここから先の部分です。
helloServiceのfindOneメソッドの戻り値をemployeeに代入しています。
HelloServiceクラスのfindOneメソッド内では
Map<String, Object> map = helloRepository.findOne(id);
HelloRepositoryクラスのfindOneメソッドでは
String query = "SELECT " + " employee_id," + " employee_name," + " age " + "FROM employee " + "WHERE employee_id=?"; Map<String, Object> employee = jdbcTemplate.queryForMap(query, id); return employee;
このように処理が行われておりますが、これらの一連の流れは何をしているのでしょうか?