网站建设的项目总结专业做化妆品的网站
网站建设的项目总结,专业做化妆品的网站,常德建设企业网站,wordpress 主题 底部美化之前搭建了整个开发环境实现了登录注册#xff0c;springBoot整合mybatis完成增删改查#xff0c;今天完成分页查询#xff0c;使用阿里云oss存储照片等资源#xff0c;后期会尝试自己搭建分布式文件系统来实现。
一#xff0c;SpringBootMybatis完成分页查询 1#xff…之前搭建了整个开发环境实现了登录注册springBoot整合mybatis完成增删改查今天完成分页查询使用阿里云oss存储照片等资源后期会尝试自己搭建分布式文件系统来实现。
一SpringBootMybatis完成分页查询 1导入分页插件坐标我们需要使用分页插件帮助我们实现分页查询 !--引入pageHelper依赖--
dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.4.6/version
/dependency2实现controller层代码如下 //文章列表分页查询
GetMapping
public ResultPageBeanArticle getArticleByPage(Integer pageNum,Integer pageSize,RequestParam(required false) Integer categoryId,RequestParam(required false) String state
){PageBeanArticle pageResultarticleService.getArticleByPage(pageNum, pageSize,categoryId,state);return Result.success(pageResult);
} 在这里前端传递四个参数前两个参数pageNum和pageSize是前端传递的分页的页数和每页的记录数后两个参数是分页查询需要的条件需要注意的是分页查询的条件可能不是必须的于是我们加入RequestParam注解将参数required改为false标注传递的该参数不是必须的之后就调用service层进行具体的代码实现
3service层实现 //实现文章分页查询
public PageBeanArticle getArticleByPage(Integer pageNum, Integer pageSize,Integer categoryId, String state) {//用于封装返回的数据PageBeanArticle pbResultnew PageBean();//调用pagehelp插件开启分页查询PageHelper.startPage(pageNum,pageSize);//调用mapper层进行查询//查询的时候只能是登录用户查询自己的文章Integer userIdThreadLocalUtil.getId();ListArticle articleListarticleMapper.list(categoryId,state,userId);//将当前查询的所有文章数据强制转化为分页插件提供的Page类指定泛型为文章类PageArticle articlePage (PageArticle) articleList;//及那个page中的数据封装金PageBean中返回pbResult.setTotal(articlePage.getTotal());pbResult.setItems(articlePage.getResult());return pbResult;
} 在上述代码中实现分页查询之前我们需要先调用pageHelp插件开启分页查询也就是是 PageHelper.startPage(pageNum,pageSize);传递进去查询的页数和每页记录数之后调用mapper进行查询查询完之后返回结果这时候插件的作用就体现出来了我们直接将查询出来的结果封装在pageHelper插件提供的page对象中我这里代码直接强转这时候插件就会自动将我们查询的结果处理好最后直接封装返回即可 4mapper层实现
由于参数的不确定我们这里不使用注解开发使用xml文件编写动态sql来实现
ArticleMapper实现 //进行文章的分页查询
ListArticle list(Integer categoryId, String state, Integer userId);ArticleMapper.xml实现 ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.qmlx.mapper.ArticleMapper!--命名空间加载映射接口--!--User selectById();--select idlist resultTypecom.qmlx.pojo.Articleselect * from articlewhereif testcategoryId!nullcategory_id#{categoryId}/ifif teststate!nulland state#{state}/ifand create_user#{userId}/whereand create_user#{userId}/select/mapper在上述代码中ArticleMapper.xml文件的位置要和ArticleMapper在同一个目录之下一般放在resources目录下结构如下 注意在resources目录下创建的是目录所以不能使用 . 的方式例如我这个目录创建的使用应该是com/qmlx/mapper/ArticleMapper.xml,不能是com.qmlx.mapper.ArticleMapper.xml.并且在xml文件中需要指定id以及resultType也就是mapper中对应的方法以及返回的类型
select idlist resultTypecom.qmlx.pojo.Article
之后书写sql查询完毕返回即可 二SpringBoot阿里云oss存储图片 在项目实现中会经常遇到图片音视频文档等大文件需要耗费大量的存储资源那图片举例例如我们在项目中需要存储用户头像这种资源比较耗费存储空间于是在存取到数据库的时候我们一般存图片的url图片本身存储在有公网地址的服务器上也就是互联网上的大型计算机不知道这个说法对不对大概这个意思吧我的理解到时候我们只需访问图片对应的这个地址就可以获取到这张图片 而这种互联网上的计算机就叫云他对外提供了很多服务例如云计算云数据库等等我们本次使用的是阿里云提供的云存储服务oss。
实现方法
1注册阿里云账号开通对象存储服务oss这个不过多解释百度即可。
2在oss管理控制台页面新建bucket也就是一个存储空间 新建Bucket命名为 hmleadnews 读写权限为 公共读注意bucket名称如果重复换一个即可 3获取AccessKey
点击你的头像点击方框获取之后一定记得复制保存复制保存后面要用 4编写代码
这里的代码我已经封装在一个工具类里面你只需要做两步
第一步导入坐标 !--阿里云依赖--
dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion3.15.1/version
/dependency
dependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion2.3.1/version
/dependency
dependencygroupIdjavax.activation/groupIdartifactIdactivation/artifactIdversion1.1.1/version
/dependency
!-- no more than 2.3.3--
dependencygroupIdorg.glassfish.jaxb/groupIdartifactIdjaxb-runtime/artifactIdversion2.3.3/version
/dependency 注意我这里是java9版本以上使用的坐标其余版本卡参考阿里云官方手册
安装OSS Java SDK_对象存储(OSS)-阿里云帮助中心 (aliyun.com)
第二步copy我的工具类 public class AliOssUtil {private static final String ENDPOINT ;private static final String ACCESS_KEY_ID ;private static final String SECRET_ACCESS_KEY ;private static final String BUCKET_NAME ;//上传文件,返回文件的公网访问地址public static String uploadFile(String objectName, InputStream inputStream){// 创建OSSClient实例。OSS ossClient new OSSClientBuilder().build(ENDPOINT,ACCESS_KEY_ID,SECRET_ACCESS_KEY);//公文访问地址String url ;try {// 创建存储空间。ossClient.createBucket(BUCKET_NAME);ossClient.putObject(BUCKET_NAME, objectName, inputStream);url https://BUCKET_NAME.ENDPOINT.substring(ENDPOINT.lastIndexOf(/)1)/objectName;} catch (OSSException oe) {System.out.println(Caught an OSSException, which means your request made it to OSS, but was rejected with an error response for some reason.);System.out.println(Error Message: oe.getErrorMessage());System.out.println(Error Code: oe.getErrorCode());System.out.println(Request ID: oe.getRequestId());System.out.println(Host ID: oe.getHostId());} catch (ClientException ce) {System.out.println(Caught an ClientException, which means the client encountered a serious internal problem while trying to communicate with OSS, such as not being able to access the network.);System.out.println(Error Message: ce.getMessage());} finally {if (ossClient ! null) {ossClient.shutdown();}}return url;}
} 注意前面四个静态常量对应的值要修改为你自己的该方法传递两个参数 objectName,和 inputStream分别是存储文件的名称以及该文件前端传递的输入流具体传递形式详见controlller层代码。
第三步编写controller RestController
public class FileUploadController {PostMapping(/upload)public Result upload(MultipartFile file) throws IOException {//获取文件原始名String originalFilename file.getOriginalFilename();//保证文件名不重复String filename UUID.randomUUID().toString()originalFilename.substring(originalFilename.lastIndexOf(.));//调用工具类将文件存储在阿里云上String url AliOssUtil.uploadFile(filename, file.getInputStream());//将文件存储在本地磁盘上//file.transferTo(new File(D:\\桌面\\upload\\filename));return Result.success(url);}
} 注意前端采用post方式类型为file编码为multipart/form-data后端接受类型为MultipartFile 其余代码不用修改即可其余功能可参考阿里云官方手册
马上过年了贪玩了更新有点小慢不过还是要坚持下去
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85237.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!