请用上个问题回答中的数据库演示一个广告功能的增删查改的springboot注解项目
时间: 2023-12-14 12:40:07 浏览: 108
好的,我可以为您提供一个基于Springboot和MySQL数据库的广告功能的增删查改的示例项目。
首先,我们需要创建一个名为 "advertisement" 的数据库,其中包含一个名为 "ad" 的表,该表包含以下字段:
- id: 广告的唯一标识符,类型为INT,主键,自增长。
- title: 广告标题,类型为VARCHAR。
- content: 广告内容,类型为TEXT。
- url: 广告链接,类型为VARCHAR。
- create_time: 广告创建时间,类型为DATETIME。
接下来,我们创建一个Springboot项目并添加必要的依赖项,包括Spring Web、Spring Data JPA和MySQL Connector。
在项目中创建一个名为 "Advertisement" 的实体类,该类映射到数据库中的 "ad" 表:
```
@Entity
@Table(name = "ad")
public class Advertisement {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String title;
private String content;
private String url;
@Column(name = "create_time")
private LocalDateTime createTime;
// getters and setters
}
```
然后我们创建一个名为 "AdvertisementRepository" 的接口,该接口继承了Spring Data JPA的 "JpaRepository" 接口,并提供了一些自定义方法:
```
@Repository
public interface AdvertisementRepository extends JpaRepository<Advertisement, Integer> {
List<Advertisement> findByTitleContaining(String title);
List<Advertisement> findByCreateTimeBetween(LocalDateTime start, LocalDateTime end);
}
```
现在我们可以使用 "AdvertisementRepository" 接口来进行广告的增删查改操作。下面是一个名为 "AdvertisementController" 的REST控制器,它处理HTTP请求并调用相应的AdvertisementRepository方法:
```
@RestController
@RequestMapping("/advertisement")
public class AdvertisementController {
@Autowired
private AdvertisementRepository repository;
@PostMapping
public Advertisement createAdvertisement(@RequestBody Advertisement ad) {
ad.setCreateTime(LocalDateTime.now());
return repository.save(ad);
}
@GetMapping("/{id}")
public Advertisement getAdvertisement(@PathVariable int id) {
return repository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Advertisement", "id", id));
}
@GetMapping
public List<Advertisement> getAllAdvertisements() {
return repository.findAll();
}
@GetMapping("/search")
public List<Advertisement> searchAdvertisements(@RequestParam(required = false) String title,
@RequestParam(required = false) LocalDateTime start,
@RequestParam(required = false) LocalDateTime end) {
if (title != null) {
return repository.findByTitleContaining(title);
} else if (start != null && end != null) {
return repository.findByCreateTimeBetween(start, end);
} else {
return repository.findAll();
}
}
@PutMapping("/{id}")
public Advertisement updateAdvertisement(@PathVariable int id, @RequestBody Advertisement ad) {
Advertisement existingAd = repository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Advertisement", "id", id));
existingAd.setTitle(ad.getTitle());
existingAd.setContent(ad.getContent());
existingAd.setUrl(ad.getUrl());
return repository.save(existingAd);
}
@DeleteMapping("/{id}")
public String deleteAdvertisement(@PathVariable int id) {
Advertisement existingAd = repository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Advertisement", "id", id));
repository.delete(existingAd);
return "Deleted advertisement with id: " + id;
}
}
```
最后,在 "application.properties" 文件中,我们需要指定数据库的连接信息和一些其他属性:
```
spring.datasource.url=jdbc:mysql://localhost:3306/advertisement?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
```
以上就是一个基于Springboot和MySQL数据库的广告功能的增删查改的示例项目。
阅读全文