该业务场景有多种实现方式,我们根据不同的场景选择合适的实现方式。本篇主要介绍的是图片由前端调用接口传递给后端后,由后端直接保存到数据库中保存,读取时后端直接将图片以流的方式返回给前端来实现;
接口已MultipartFile接收文件,MultipartFile不光可以接收图片,还可以接收Excel、word等文件,Controller层不对数据进行处理,只做必要的验证和异常信息的拦截;
MultipartFile可以直接通过 .getBytes() 获取到byte[] 然后直接调用Mapper通用接口进行保存;缩略图的话,需要导入依赖thumbnailator,Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好,功能十分强大,可以进行缩略、旋转、按比例缩略、裁剪等操作,最后通过BufferedImage也是保存为byte[] 类型数据进行保存;
我实验了好多种方式,都没能实现该效果,最后采用了xml文件中指向实体类的方式,mapper采用实体类接收数据,虽然用起来比较鸡肋,但是没办法,先实现功能吧,欢迎有其他好办法的小伙伴指教;
需求:业务场景:图片在前端上传到服务器进行保存,然后读取到前端进行展示。实现方式说明:该业务场景有多种实现方式,我们根据不同的场景选择合适的实现方式。本篇主要介绍的是图片由前端调用接口传递给后端后,由后端直接保存到数据库中保存,读取时后端直接将图片以流的方式返回给前端来实现;本篇只列举后端代码,保存图片时既保存了原图,也保存了缩略图;实现步骤:1、前期准备1.1 创建可以保存图片的表结构图片是以blob的类型在数据库进行保存的,考虑到原图有可能会比较大,所以采用了longbl
CREATE TABLE `company` (
`id` INT(11) PRIMARY KEY AUTO_INCREMENT,
`company_name` VARCHAR(255) DEFAULT NULL COMMENT '企业名称',
`business_license_url` VARCHAR(255) DEFAULT NULL COMMENT '营业执照上传url'
) ENGINE=INNODB AUTO_INCREMENT=101 DEFAULT
@Entity
@Table(name = "article_picture")
public class ArticlePictureEntity extends BaseEntity implements Serializable {
*
图片
地址
private String url;
* 文章...
文章目录前言一、导入jar包及配置二、编写
前端
(testUploadFile.html)三、Controller层(FileUploadController)四、Service层(UserServiceImpl)五、运行Demo后记
上传图片
到
数据库
有两种方式:
将
图片
保存
的路径存储到
数据库
。
该方式的
数据库
字段是varchar类型的,毕竟存放的是路径嘛
将
图片
以二进制数据流的形式直接写入
数据库
字段中。
这种方式一般不推荐,因为对
数据库
的性能损耗非常严重。
所以本文采用第一种方式:将图
第一步,在webmvcconfig下配置虚拟路径映射,一般来说我们存照片的地址就在主机上创建一个文件夹,也就是file:后边的uploadPathImg,但是我们不能直接访问物理路径的
图片
,因此我们要配置虚拟路径的映射,前面的/uploadImg/**就是说http://ip地址:+端口号+/uploadImg/**就可以访问到
图片
了,这里我的uploadPathImg通过@value注解去到yml中找到对应的配置属性值,我们通过yml去配置该值后期便于修改
第二步,配置yaml
virtual...
springboot
-父子工程-初始版(包含CRUD示例接口)
jpa-hibernate-dm:
数据库
为{国产达梦
数据库
},持久层技术为jpa-hibernate
mybatis
-dm:
数据库
为{国产达梦
数据库
},持久层技术为
mybatis
mybatis
-plus-dm:
数据库
为{国产达梦
数据库
},持久层技术为
mybatis
-plus
补充说明{针对国产达梦
数据库
}:
用户名和
数据库
(模式)名一致,可以选择jpa-hibernate-dm 或者
mybatis
-plus-dm
用户名和
数据库
(模式)名不一致,可以选择
mybatis
-dm
一、基于注解(@Scheduled)
二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从
数据库
中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。
三、基于注解设定多线程定时任务
一、静态:基于注解
基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一......
项目中需要从两个不同的
数据库
查询数据,之前实现方法是:
springboot
配置连接一个数据源,另一个使用jdbc代码连接。
为了改进,现在使用
SpringBoot
配置连接两个数据源
实现效果:
一个
SpringBoot
项目,同时连接两个
数据库
:比如一个是pgsql
数据库
,一个是oracle
数据库
(啥
数据库
都一样,连接两个同为oracle的
数据库
,或两个不同的
数据库
,只需要更改对应的driver-class-name和jdbc-url等即可)
注意:连接什么
数据库
,要引入对应
数据库
的包
好的,以下是一个简单的Spring Boot应用程序,它可以将笔记存入
数据库
中:
首先,你需要一个Note实体类,它具有id、title和content属性,这些属性都需要在
数据库
中进行存储。例如:
```
java
@Entity
public class Note {
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String content;
// getters and setters
接下来,你需要一个NoteRepository接口,用于将Note对象存入
数据库
中:
```
java
public interface NoteRepository extends JpaRepository<Note, Long> {
现在,你可以通过使用Spring的依赖注入来创建一个NotesService,它使用NoteRepository来将笔记存入
数据库
:
```
java
@Service
public class NotesService {
private final NoteRepository noteRepository;
public NotesService(NoteRepository noteRepository) {
this.noteRepository = noteRepository;
public void save(Note note) {
noteRepository.save(note);
最后,你可以在你的控制器中使用这个NotesService来将笔记存入
数据库
中:
```
java
@RestController
@RequestMapping("/api/notes")
public class NotesController {
private final NotesService notesService;
public NotesController(NotesService notesService) {
this.notesService = notesService;
@PostMapping("/")
public void create(@RequestBody Note note) {
notesService.save(note);
现在,当你向`/api/notes/`发送一个POST请求时,它将创建一个新的笔记,并将其存入
数据库
中。
希望这可以帮助你开始编写笔记应用程序!