广告功能,广告信息包括广告名称,广告位置,开始日期,结束日期,广告链接,广告图片,请设计一个springboot项目,关联广告表,广告位置表,广告图片表,并详细展示增删查改广告信息的java代码

时间: 2023-07-31 17:05:21 浏览: 43
首先,我们需要设计数据库表结构。根据需求,我们需要设计三张表:广告表、广告位置表、广告图片表。 广告表(advertisement): | 字段名 | 类型 | 说明 | | ------------------ | ------------- | ------------ | | id | bigint(20) | 主键ID | | name | varchar(255) | 广告名称 | | position_id | bigint(20) | 广告位置ID | | start_date | datetime | 开始日期 | | end_date | datetime | 结束日期 | | link | varchar(255) | 广告链接 | | image_id | bigint(20) | 广告图片ID | | create_time | datetime | 创建时间 | | update_time | datetime | 更新时间 | 广告位置表(ad_position): | 字段名 | 类型 | 说明 | | ------------------ | ------------- | ------------ | | id | bigint(20) | 主键ID | | name | varchar(255) | 位置名称 | | create_time | datetime | 创建时间 | | update_time | datetime | 更新时间 | 广告图片表(ad_image): | 字段名 | 类型 | 说明 | | ------------------ | ------------- | ------------ | | id | bigint(20) | 主键ID | | url | varchar(255) | 图片URL | | create_time | datetime | 创建时间 | | update_time | datetime | 更新时间 | 接下来,我们可以开始编写代码了。 首先,我们需要定义实体类Ad,包含上述广告表的字段: ```java @Entity @Table(name = "advertisement") public class Ad { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToOne @JoinColumn(name = "position_id") private AdPosition position; @Column(name = "start_date") private LocalDateTime startDate; @Column(name = "end_date") private LocalDateTime endDate; private String link; @ManyToOne @JoinColumn(name = "image_id") private AdImage image; @Column(name = "create_time") private LocalDateTime createTime; @Column(name = "update_time") private LocalDateTime updateTime; // getters and setters } ``` 接着定义实体类AdPosition和AdImage,分别对应广告位置表和广告图片表的字段: ```java @Entity @Table(name = "ad_position") public class AdPosition { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Column(name = "create_time") private LocalDateTime createTime; @Column(name = "update_time") private LocalDateTime updateTime; // getters and setters } @Entity @Table(name = "ad_image") public class AdImage { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String url; @Column(name = "create_time") private LocalDateTime createTime; @Column(name = "update_time") private LocalDateTime updateTime; // getters and setters } ``` 然后,我们需要定义对应的Repository接口,用于数据访问: ```java public interface AdRepository extends JpaRepository<Ad, Long> { } public interface AdPositionRepository extends JpaRepository<AdPosition, Long> { } public interface AdImageRepository extends JpaRepository<AdImage, Long> { } ``` 下一步,我们需要定义Service接口和实现类,用于业务逻辑处理: ```java public interface AdService { List<Ad> findAll(); Ad findById(Long id); Ad save(Ad ad); void deleteById(Long id); } @Service @Transactional public class AdServiceImpl implements AdService { @Autowired private AdRepository adRepository; @Override public List<Ad> findAll() { return adRepository.findAll(); } @Override public Ad findById(Long id) { return adRepository.findById(id).orElse(null); } @Override public Ad save(Ad ad) { return adRepository.save(ad); } @Override public void deleteById(Long id) { adRepository.deleteById(id); } } ``` 接着,我们需要定义Controller类,用于接收请求和返回响应: ```java @RestController @RequestMapping("/ads") public class AdController { @Autowired private AdService adService; @GetMapping public List<Ad> findAll() { return adService.findAll(); } @GetMapping("/{id}") public Ad findById(@PathVariable Long id) { return adService.findById(id); } @PostMapping public Ad save(@RequestBody Ad ad) { return adService.save(ad); } @PutMapping("/{id}") public Ad update(@PathVariable Long id, @RequestBody Ad ad) { Ad oldAd = adService.findById(id); if (oldAd == null) { throw new RuntimeException("Ad not found"); } oldAd.setName(ad.getName()); oldAd.setPosition(ad.getPosition()); oldAd.setStartDate(ad.getStartDate()); oldAd.setEndDate(ad.getEndDate()); oldAd.setLink(ad.getLink()); oldAd.setImage(ad.getImage()); return adService.save(oldAd); } @DeleteMapping("/{id}") public void deleteById(@PathVariable Long id) { adService.deleteById(id); } } ``` 最后,我们需要配置数据库连接信息和启动类: ```java @SpringBootApplication @EnableJpaRepositories @EntityScan public class AdApplication { public static void main(String[] args) { SpringApplication.run(AdApplication.class, args); } } spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/ad?useUnicode=true&characterEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=root spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.hibernate.ddl-auto=update ``` 现在,我们就完成了广告信息的增删查改功能的代码实现。

相关推荐

最新推荐

recommend-type

springboot全局日期格式化的两种方式

主要介绍了springboot全局日期格式化的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Springboot通过图片路径形式获取图片

主要介绍了Springboot通过图片路径形式获取图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

Centos下SpringBoot项目启动与停止脚本的方法

主要介绍了Centos下SpringBoot项目启动与停止脚本的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

SpringBoot+Logback实现一个简单的链路追踪功能

Spring Boot默认使用LogBack日志系统,并且已经引入了相关的jar包,所以我们无需任何配置便可以使用LogBack打印日志。这篇文章主要介绍了SpringBoot+Logback实现一个简单的链路追踪功能,需要的朋友可以参考下
recommend-type

vue+springboot图片上传和显示的示例代码

主要介绍了vue+springboot图片上传和显示的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

云原生架构与soa架构区别?

云原生架构和SOA架构是两种不同的架构模式,主要有以下区别: 1. 设计理念不同: 云原生架构的设计理念是“设计为云”,注重应用程序的可移植性、可伸缩性、弹性和高可用性等特点。而SOA架构的设计理念是“面向服务”,注重实现业务逻辑的解耦和复用,提高系统的灵活性和可维护性。 2. 技术实现不同: 云原生架构的实现技术包括Docker、Kubernetes、Service Mesh等,注重容器化、自动化、微服务等技术。而SOA架构的实现技术包括Web Services、消息队列等,注重服务化、异步通信等技术。 3. 应用场景不同: 云原生架构适用于云计算环境下的应用场景,如容器化部署、微服务
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。