iT邦幫忙

2023 iThome 鐵人賽

DAY 25
1

JPA CRUD

來到了最後一步,讓我們用這幾天學習並建立的 EntityRepository 在我們的 service 來實現業務邏輯及資料庫的增刪改查。

package com.example.spring.service;

import org.springframework.stereotype.Service;

@Service
public class Kitchen {

    @Autowired
    private RestaurantRepository restaurantRepository;

    // 建立一筆資料
    public RestaurantEntity creatRestaurant(RestaurantEntity restaurantEntity){
        return restaurantRepository.save(restaurantEntity);
    }

    // 取得所有資料
    public List<RestaurantEntity> getAllRestaurant(){
        return restaurantRepository.findAll();
    }

    // 抓取特定資料
    public RestaurantEntity getRestaurant(Long employeeNum){
        return restaurantRepository.findById(employeeNum);
    }
    public RestaurantEntity getRestaurant(String chef){
        return restaurantRepository.findByChef(chef);
    }

    // 更新資料
    public RestaurantEntity updateRestaurant(Long employeeNum, 
                            RestaurantEntity restaurantEntity){
        restaurantEntity.setId(employeeNum);
        return restaurantRepository.save(restaurantEntity);
    }

    // 刪除特定資料
    public void deleteRestaurant(Long employeeNum){
       restaurantRepository.deleteById(employeeNum);
    }
}

以上的 Repository 皆是我們繼承 JpaRepository 所擁有的,可以依照小駝峰的命名規則去 findBy 資料庫特定的欄位,其中也包含 AndOrderBy 的使用規則。

最後再回到我們的 controller 將呼叫需要使用的服務層方法。

package com.example.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {

    @Autowire
    private Kitchen kitchen;

    @RequestMapping("/hello") 
    public ModelAndView helloWorld() {

        ModelAndView modelAndView = new ModelAndView("helloView");

        // 建立一個 Restaurant 物件
        Restaurant restaurant = new Restaurant("John", "Fish");

        // 將 Restaurant 物件新增到資料庫
        kitchen.save(restaurant);

        // 從資料庫獲取特定資料
        restaurant = kitchen.findByChef("Ken");
        String recipe = restaurant.getRecipe();

        // 將資料庫查詢資料回傳
        modelAndView.addAttribute("recipe", recipe);

        // 回傳 ModelAndView 物件
        return modelAndView; 
    }
}

這樣我就經由Spring MVC 及 Spring JPA 來連接資料庫實現網站最基本的增刪改查業務邏輯了!!我們可以根據自己的需求擴展和修改這個範例,添加更多功能和業務邏輯。

參考資料

https://spring.io/guides/gs/accessing-data-jpa/
https://www.baeldung.com/jpa-entities
https://spring.io/projects/spring-data-jpa
https://www.baeldung.com/spring-data-repositories
https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa


上一篇
Day 24 : Spring JPA 實際操作:@Repository
下一篇
Day 26 : Spring Boot Web Server
系列文
Spring、Spirng MVC 及 Spring Boot 自主學習旅途!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言