最近我们小组准备要去制作一个大熊猫国家公园的帖子网站,我是一个项目经理,但是在我们项目的开发初期,我需要也投身到代码的设计制作之中,我负责的是后端代码的制作,然后我负责的是一个比较简单的功能,主页的轮播图的显示,这个功能相对来说比较的简单,我使用的是使用mysql来实现这个功能,首先将我们需要的图片上传到七牛云服务器,然后服务器会返回一个图片的地址,然后我们就把这个地址存放进入mysql的数据库,接着在需要使用这个代码的时候,我们就从数据库里使用sql语句,来引出这个地址,具体写法如下:
首先创建一个pojo类,存放文件的属性。
package panda.pojo; import com.baomidou.mybatisplus.annotation.TableName; import java.util.Date; @TableName("tb_main_image") public class RotationImage { public String url; public String uploader_name; public Date upload_date; public int uid; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUploader_name() { return uploader_name; } public void setUploader_name(String uploader_name) { this.uploader_name = uploader_name; } public Date getUpload_date() { return upload_date; } public void setUpload_date(Date upload_date) { this.upload_date = upload_date; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } @Override public String toString() { // return "image{" + // "url='" + url + '\'' + // ", uploader_name='" + uploader_name + '\'' + // ", upload_date=" + upload_date + // ", uid=" + uid + // '}'; return url; } }
然后创建Mapper和Service
package panda.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import panda.pojo.RotationImage; @Mapper public interface ImageMapper extends BaseMapper<RotationImage> { }
package panda.service; import java.util.List; public interface ImageService { List<String> random(); void updateUserHeadImage(Integer uid, String hash, String voucher) throws Exception; }
然后就是创建Impl来实现功能了
public List image() { QueryWrapper<RotationImage> queryWrapper = new QueryWrapper<>(); Jedis jedis = new Jedis("114.67.247.247",6379); jedis.auth("lwh331014"); List<RotationImage> a=imageMapper.selectList(queryWrapper.select("url")); for (int i = 0; i < a.size(); i++) { jedis.rpush("url", String.valueOf(a.get(i))); System.out.println(a.get(i)); } jedis.expire("url", 100); System.out.println("查看key"+jedis.lrange("url",0,a.size()-1)); System.out.println("当前key是否存在?"+jedis.exists("url")); List list=jedis.lrange("url",0,a.size()-1); System.out.println(list); return list; }
然后后面这样写也遇到了许多的问题,请教了组里的大佬,大佬进行了很多的修改。最终得出的代码如下,
@Override public List<String> random() { List<String> rotations = new ArrayList<>(); int rotationsSize = this.rotations.size(); if (rotationsSize < 6){ this.rotations.forEach(rotationImage -> rotations.add(rotationImage.getUrl())); } else { ThreadLocalRandom current = ThreadLocalRandom.current(); for (int i = 0; i < 5; i++) { rotations.add(this.rotations.get(current.nextInt(0, rotationsSize)).getUrl()); } } return rotations;
增加了一个random的函数,并且使用了一些更好的写法,使得代码风格更加舒服,简洁。这次的后端工作让我学习到了许多前后端对接的功能与操作,下次改进后继续学习。