SpringBoot JpaRepository 資料庫增刪改查
阿新 • • 發佈:2019-01-09
今天週末,自主學習,本週探索了一下SpringBoot 的資料庫操作,相比於四年前接觸的hibernate,SpringBoot的資料庫操作在便利性上有非常大的提升,程式碼量也小了很多,值得一試。案例程式碼記錄如下(注意部分方法與spring data的早期版本有區別):
版本:spring data 2.0.7
包結構:
資料庫部分:專案啟動時根據實體類自動建表,不需要手動建表,非常智慧。
1. 實體類:Device.java
@Entity public class Device { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String no; private String name; //... }
2. Repo: DeviceRepo.java
public interface DeviceRepo extends JpaRepository<Device, Long> {
Device save(Device obj);
void delete(Device obj);
Optional<Device> findById(Long id);
List<Device> findAll();
List<Device> findByNo(String no);
}
3. Ctrl: DeviceCtrl
@RestController @RequestMapping("/webapp/device") public class DevictCtrl { @Autowired DeviceRepo repo; /**儲存(無id)/更新(有id) */ @POST @RequestMapping("/") public Device save(@RequestBody Device obj){ Device obj2 = repo.save(obj); return obj2; } /**刪除 */ @DELETE @RequestMapping("/delete") public void delete(@RequestBody Device obj){ repo.delete(obj); } /**根據id查詢 */ @RequestMapping("/{id}") public Optional<Device> getOne(@PathVariable("id") Long id){ Optional<Device> obj2 = repo.findById(id); return obj2; } /**查出全部 */ @RequestMapping("/all") public List<Device> findAll(){ List<Device> persons = repo.findAll(); return persons; } /**根據編號查詢 */ @RequestMapping("/no/{no}") public List<Device> findByNo(@PathVariable("no") String no){ List<Device> persons = repo.findByNo(no); return persons; } }