需求说明
这个案例纯粹是研究用的,以备日后查看,实际中暂时还没接触过此类应用。
需求:在数据库中存储图片资源并且可以在页面中显示
实际工作中,像图片这类资源都是存储在资源服务器上的,很少会存在数据库中,主要是效率问题。但通过这个需求还是能够锻炼一个下ssm框架的使用技术。
项目实现
好,废话不多说了,我们开始准备工作,首先,我们要把SSM框架搭好,因为本次讲的不是框架的搭建,这里默认大家都没有问题。按照分层代码模式把控制层、业务层和数据访问层都搭建好,我们这里模拟一个提交用户信息的场景,那么用户信息中有一项添加头像内容,需要用户在填写完基本信息后上传一个张自己的靓照,所以我们在创建User实体类时要加入一个实例属性头像,那么它的数据类型应该选什么类型呢,很显然它要保存的是图片,最好的类型就是字节数组了。
数据库设计
java代码部分准备完后,接下来我们要准备相应的数据库了,表的设计要与实体类属性一一对应,这里就不细说了,因为都十分简单,如果想映射简单点,最好按照约定命名即下划线与驼峰的约定。在设计表中主要是存储图片的字段它的类型?这里说的是数据库中字段的类型,如果对数据库比较熟悉那么大家肯定会想到BLOB类型,没错,我们这里就要用这个类型,不过这里需要强调的是BLOB类型虽然是用来在数据库中存储大数据的,但它其实也不是多大的数据都能存储,它的存储空间只有64k这个大小是mysql5.7中的上限,其它数据库暂时没查过,有清楚的可以补上。那么如果你的图片上传限制在64k应该就没问题,那如果大于这个上限怎么办呢,其实mysql提供了一个更大的存储类型longBLOB类型,用了这个类型基本就可以放心使用了。
类型转换
这个才是这个案例的主要内容,我们首先准备一个前端用户信息页面,当然除了基本信息外还需要一个上传文件控件,这些都是前端的东西,这里也就不说了我