基于springscurity基础架构,自己创建两张表,一张person ,字段有 integer id,String iphone,String address. 一张account,字段名 integer id,String name,double balance,关联Person表的主键ID,personId实现两张表联合增删改查的方法。
时间: 2024-02-01 14:12:48 浏览: 74
首先,我们需要定义两个实体类,Person和Account,并通过注解指定表名和字段名:
```java
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "phone")
private String phone;
@Column(name = "address")
private String address;
// getter and setter
}
@Entity
@Table(name = "account")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "balance")
private Double balance;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "person_id")
private Person person;
// getter and setter
}
```
这里使用了JPA注解来定义实体类和表的映射关系,同时使用了@ManyToOne注解来指定账户表和人员表之间的关联关系。
然后,我们需要定义一个数据访问层(Repository),这里使用Spring Data JPA来简化开发:
```java
public interface AccountRepository extends JpaRepository<Account, Integer> {
List<Account> findByPersonId(Integer personId);
}
```
这里定义了一个AccountRepository接口,继承了JpaRepository接口,可以自动实现常用的增删改查方法。同时,我们自定义了一个findByPersonId方法,用于根据人员ID查询相关账户信息。
最后,我们可以编写一个Service层来调用Repository中的方法,并将其暴露为RESTful API:
```java
@Service
public class AccountService {
@Autowired
private AccountRepository accountRepository;
public List<Account> getAccountsByPersonId(Integer personId) {
return accountRepository.findByPersonId(personId);
}
public Account createAccount(Account account) {
return accountRepository.save(account);
}
public Account updateAccount(Account account) {
return accountRepository.save(account);
}
public void deleteAccount(Integer accountId) {
accountRepository.deleteById(accountId);
}
}
```
这里定义了一个AccountService类,通过@Autowired注解自动注入AccountRepository实例,并暴露了getAccountsByPersonId、createAccount、updateAccount、deleteAccount四个方法,分别对应查询账户信息、创建账户、更新账户、删除账户四个操作。
最后,我们可以使用Spring MVC来编写Controller,将Service层暴露为RESTful API:
```java
@RestController
@RequestMapping("/api/accounts")
public class AccountController {
@Autowired
private AccountService accountService;
@GetMapping("")
public List<Account> getAccountsByPersonId(@RequestParam Integer personId) {
return accountService.getAccountsByPersonId(personId);
}
@PostMapping("")
public Account createAccount(@RequestBody Account account) {
return accountService.createAccount(account);
}
@PutMapping("")
public Account updateAccount(@RequestBody Account account) {
return accountService.updateAccount(account);
}
@DeleteMapping("/{accountId}")
public void deleteAccount(@PathVariable Integer accountId) {
accountService.deleteAccount(accountId);
}
}
```
这里定义了一个AccountController类,通过@RestController注解将其声明为RESTful API,同时使用@RequestMapping注解定义了API的根路径为/api/accounts,而后续的@GetMapping、@PostMapping、@PutMapping、@DeleteMapping注解则分别对应查询账户信息、创建账户、更新账户、删除账户四个操作。
阅读全文