广告功能,广告信息包括广告名称,广告位置,开始日期,结束日期,广告链接,广告图片,请设计一个springboot项目,关联广告表,广告位置表,广告图片表,并详细展示增删查改广告信息的java代码
时间: 2023-07-31 17:06:14 浏览: 104
首先,我们需要设计广告表(advertisement)、广告位置表(ad_position)和广告图片表(ad_image)的数据结构。这里给出简单的表结构:
advertisement表:
| Field | Type | Null | Key | Default | Extra |
|----------------|---------------|------|-----|---------|----------------|
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| position_id | int(11) | YES | MUL | NULL | |
| start_date | datetime | YES | | NULL | |
| end_date | datetime | YES | | NULL | |
| link | varchar(255) | YES | | NULL | |
| image_id | int(11) | YES | MUL | NULL | |
ad_position表:
| Field | Type | Null | Key | Default | Extra |
|----------------|---------------|------|-----|---------|----------------|
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
ad_image表:
| Field | Type | Null | Key | Default | Extra |
|----------------|---------------|------|-----|---------|----------------|
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| url | varchar(255) | YES | | NULL | |
接下来,我们需要创建对应的实体类和DAO接口。这里只给出advertisement实体类和对应的DAO接口代码:
advertisement实体类:
```
@Entity
@Table(name = "advertisement")
public class Advertisement {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "position_id")
private AdPosition position;
@Temporal(TemporalType.TIMESTAMP)
private Date startDate;
@Temporal(TemporalType.TIMESTAMP)
private Date endDate;
private String link;
@ManyToOne
@JoinColumn(name = "image_id")
private AdImage image;
// getter and setter methods
}
```
AdvertisementDAO接口:
```
public interface AdvertisementDAO extends JpaRepository<Advertisement, Long> {
List<Advertisement> findByPosition(AdPosition position);
List<Advertisement> findByStartDateBeforeAndEndDateAfter(Date startDate, Date endDate);
// other custom query methods
}
```
接下来,我们需要创建对应的服务层和控制层。这里给出广告服务层和广告控制层的代码:
广告服务层:
```
@Service
public class AdvertisementService {
@Autowired
private AdvertisementDAO advertisementDAO;
public List<Advertisement> getAdvertisementsByPosition(Long positionId) {
AdPosition position = new AdPosition();
position.setId(positionId);
return advertisementDAO.findByPosition(position);
}
public List<Advertisement> getActiveAdvertisements() {
Date now = new Date();
return advertisementDAO.findByStartDateBeforeAndEndDateAfter(now, now);
}
public Advertisement saveAdvertisement(Advertisement advertisement) {
return advertisementDAO.save(advertisement);
}
public void deleteAdvertisement(Long id) {
advertisementDAO.deleteById(id);
}
}
```
广告控制层:
```
@RestController
@RequestMapping("/advertisement")
public class AdvertisementController {
@Autowired
private AdvertisementService advertisementService;
@GetMapping("/position/{positionId}")
public List<Advertisement> getAdvertisementsByPosition(@PathVariable Long positionId) {
return advertisementService.getAdvertisementsByPosition(positionId);
}
@GetMapping("/active")
public List<Advertisement> getActiveAdvertisements() {
return advertisementService.getActiveAdvertisements();
}
@PostMapping("/")
public Advertisement saveAdvertisement(@RequestBody Advertisement advertisement) {
return advertisementService.saveAdvertisement(advertisement);
}
@DeleteMapping("/{id}")
public void deleteAdvertisement(@PathVariable Long id) {
advertisementService.deleteAdvertisement(id);
}
}
```
最后,我们需要在启动类上添加注解@EnableJpaRepositories,这样才能让Spring Boot自动创建对应的数据访问对象。
这样,一个简单的Spring Boot项目就完成了。当然,这只是一个简单的示例,实际情况下可能会更加复杂,需要根据具体的需求进行调整。
阅读全文