From e51834c899ff20781295410961934eb06239385c Mon Sep 17 00:00:00 2001 From: Kamal Wickramanayake Date: Sat, 16 May 2026 21:18:32 +0530 Subject: Added spring-boot sample applications --- .../com/example/spring/bank/account/Account.java | 53 ++++++++++++++++++++++ .../spring/bank/account/AccountController.java | 28 ++++++++++++ .../spring/bank/account/AccountManager.java | 13 ++++++ .../spring/bank/account/AccountManagerImpl.java | 33 ++++++++++++++ .../spring/bank/account/AccountRepository.java | 7 +++ 5 files changed, 134 insertions(+) create mode 100644 spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java create mode 100644 spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java create mode 100644 spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java create mode 100644 spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java create mode 100644 spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java (limited to 'spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account') diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java new file mode 100644 index 0000000..b5fe811 --- /dev/null +++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java @@ -0,0 +1,53 @@ +package com.example.spring.bank.account; + +import java.math.BigDecimal; + +import com.example.spring.bank.customer.Customer; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; + +@Entity +public class Account { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long accountNumber; + + private BigDecimal balance; + + public Account() { + super(); + } + + public Account(BigDecimal balance) { + super(); + this.balance = balance; + } + + @ManyToOne + private Customer customer; + + public Customer getCustomer() { + return customer; + } + + public void setCustomer(Customer customer) { + this.customer = customer; + } + + public Long getAccountNumber() { + return accountNumber; + } + public void setAccountNumber(Long accountNumber) { + this.accountNumber = accountNumber; + } + public BigDecimal getBalance() { + return balance; + } + public void setBalance(BigDecimal balance) { + this.balance = balance; + } +} \ No newline at end of file diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java new file mode 100644 index 0000000..dc017dd --- /dev/null +++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java @@ -0,0 +1,28 @@ +package com.example.spring.bank.account; + +import org.springframework.beans.factory.annotation.Autowired; +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.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/account") +public class AccountController { + + @Autowired + private AccountManager accountManager; + + @GetMapping("/{accountNumber}") + public Account getAccount(@PathVariable Long accountNumber) { + // TODO: Check null returns. + Account account = accountManager.findByAccountNumber(accountNumber).get(); + return account; + } + + @PostMapping("/") + public Account createAccount(Account account) { + return accountManager.create(account); + } +} \ No newline at end of file diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java new file mode 100644 index 0000000..14dfa0c --- /dev/null +++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java @@ -0,0 +1,13 @@ +package com.example.spring.bank.account; + +import java.util.Optional; + +public interface AccountManager { + + public Account create(Account account); + + public Optional findByAccountNumber(Long accountNumber); + public Iterable findAll(); + + // Other methods +} diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java new file mode 100644 index 0000000..2227469 --- /dev/null +++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java @@ -0,0 +1,33 @@ +package com.example.spring.bank.account; + +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import jakarta.transaction.Transactional; + +@Service +public class AccountManagerImpl implements AccountManager { + + @Autowired + private AccountRepository accountRepository; + + @Override + @Transactional + public Account create(Account account) { + return accountRepository.save(account); + } + + @Override + public Optional findByAccountNumber(Long accountNumber) { + return accountRepository.findById(accountNumber); + } + + @Override + public Iterable findAll() { + return accountRepository.findAll(); + } + + // Other methods +} \ No newline at end of file diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java new file mode 100644 index 0000000..086f828 --- /dev/null +++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java @@ -0,0 +1,7 @@ +package com.example.spring.bank.account; + +import org.springframework.data.repository.ListCrudRepository; + +public interface AccountRepository extends ListCrudRepository { + +} \ No newline at end of file -- cgit v1.2.3