diff options
| author | Kamal Wickramanayake <kamal@inbox.lk> | 2026-05-16 21:18:32 +0530 |
|---|---|---|
| committer | Kamal Wickramanayake <kamal@inbox.lk> | 2026-05-16 21:18:32 +0530 |
| commit | e51834c899ff20781295410961934eb06239385c (patch) | |
| tree | 78f0058914063e37cbd6812d204e4f84efd0ab90 /spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account | |
| parent | b1d598a2f02819bc127d0d3522dc7ac91b4dee65 (diff) | |
Added spring-boot sample applications
Diffstat (limited to 'spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account')
5 files changed, 134 insertions, 0 deletions
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<Account> findByAccountNumber(Long accountNumber); + public Iterable<Account> 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<Account> findByAccountNumber(Long accountNumber) { + return accountRepository.findById(accountNumber); + } + + @Override + public Iterable<Account> 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<Account, Long> { + +}
\ No newline at end of file |
