# Lade_Doing_BLOG_API **Repository Path**: koreantion/lade_doing_blog_api ## Basic Information - **Project Name**: Lade_Doing_BLOG_API - **Description**: 根据以前的经验,搭建起来的新博客! - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-17 - **Last Updated**: 2025-10-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 记录搭建博客系统 ## 用户界面 https://gitee.com/koreantion/lade_doing_blog_web ## 截图 ![输入图片说明](api-common.png) ![输入图片说明](api-front.png) ![输入图片说明](api-manage.png) ## 要点 严格要求标准 - 从基本的增删改改查开始搭建 - 然后添加多表联查的技能 - 熟练掌握mysql语句 先从传统的后台管理系统+前端页面展示显示开始做,然后一个个添加更多的模块 未来可以做一个多用户可以存在的论坛管理系统 ## 开发要求(在业务层实现具体的拼接) - 实现基本的增删改查操作 - manage模块 - 文章接口加强版 - 查询文章的时候,查询用户、查询对应的所有分类和标签 √ - 增加文章的时候,更新用户名、文章内容(基本)、更新文章分类表和文章标签表 √ - 更新文章的时候,更新用户名、文章内容(基本)、更新文章分类表和文章标签表 √ - 删除文章的时候,删除文章分类表和文章标签表对应的关联id √ - 分类接口加强版 - 根据分类查询所有的文章 √ - 根据分类和用户id查询所有的文章 √ - 删除分类的时候,删除文章分类中对应的关系 √ - 更新分类 √ - 标签接口加强版 - 根据标签查询所有的文章 √ - 根据标签和用户id查询所有的文章 √ - 删除标签的时候,删除文章标签中对应的关系 √ - 更新标签 √ - 用户接口加强版 - 根据用户查询所有的文章 √ - 根据用户和分类查询对应的文章信息 √ - 根据用户和标签查询对应的文章信息 √ - front模块 - 文章接口加强版 - 分页查询所有的文章信 - 分类接口加强版 - 查询所有的分类 - 标签接口加强版 - 用户接口加强版 ## 日志 刚开始的时候使用Int类型修饰id值,if语句用到判断的时候判断是否为0,而不是判断是否为null。 后面因为HashSet转化为数组要赋值,所以修改所有的entity类的id数据类型为Integer类型,这时候 判断就判断是否为null 为什么添加一条数据的时候需要返回Int类型,因为插入之后需要获取到新插入的id,然后更新其他操作 使用Integer作为映射mybatis中的方法返回结果可以看有没有影响到数据库row idea出了bug,强制关闭之后没有停止服务,而是还在后台加载服务,所以我改了端口9091重新启动服务器 之后,因为请求地址是9090,而后台没有关闭,所以导致请求的是之前的代码.... admin目录下的接口默认是有登录状态,所以userId自动传递过来呢! 判断一个数据结构是否为空,这个数据必须是包装类或者是自定义的对象 如何看sql是否执行成功,可以直接看运行时候mybatis的日志 将所有的基本数据类型传递参数改为包装数据类型 添加Kenife4j的swagger插件,配置多组模块 删除用户之后,设置用户下的所有文章的user_id为0表示这篇文章处于游离状态,这是后期实现多用户要实现的功能 后台管理系统主要是增删改查操作,前台展示页面可以自己根据业务需要进行写,比如说: - 用户接口在前台个人中心的时候需要查询出对应的文章信息,其实这个在查询文章接口的时候就可以使用文章接口就可以了。 - 不需要再写一个用户接口之类的!因为用户和文章是一对多的关系,所以拿到user_id之后就可以通过文章接口访问对应的文章信息了。 使用@RestController(value = "manageArticleController")可以用来标识不同组之间相同包名的Controller层 传参的时候要传递需要的值就可以了,多的不要传递,因为mybatis底层判断用的是null,如果传了数字0或者是其他空字符串的话, 那么就会SQL执行错误 前期使用idea内置模块发起请求(这时候还没有分组),中期使用swagger提供给前端文档 前期不需要验证,后期加了个登录模块进行验证 解决pageHelper当超出页码的时候保持最后一页的数据问题 ~~~yml pagehelper: helper-dialect: mysql reasonable: false # 查询范围外的数据就查不到了 support-methods-arguments: true params: count=countSql ~~~ 前端要求我要返回一个个对象数组,而不是id数组,好啊! entity可以增加一些字段,但是不要轻易删除字段属性,要不然bug改不完很多。。。。 ~~~java @ApiOperation(value = "文章分页") @GetMapping public Result selectPage(Article article, @RequestParam(required = false) Integer pageNum, @RequestParam(required = false) Integer pageSize) { if (pageNum == null || pageSize == null) { // 如果 pageNum 或 pageSize 为 null,则查询所有数据 List
allArticles = articleService.selectAll(article); return Result.success(allArticles); } else { // 执行分页查询 PageInfo
page = articleService.selectPage(article, pageNum, pageSize); return Result.success(page); } } ~~~ 这样就可以实现根据其他内容Content查询的时候不需要进行分页了,而是可以直接返回全部数据。 有id获取文章的时候,先封装为Article类,然后进行查询,这样能根据文章id查询到对应的分类和标签。 没有id(查找全部文章)的时候, 根据你提供的XML片段,这是一个Maven项目的多环境参数配置示例。在这个配置中,使用了Maven的Profile功能来管理不同环境(开发、测试、生产)的配置。 以下是如何配置和创建这些配置文件的步骤: 1. **创建Maven项目**: 首先,确保你有一个基于Maven的Java项目。如果还没有,可以使用Maven命令或者集成开发环境(IDE)来创建一个新的Maven项目。 2. **编辑pom.xml文件**: 在Maven项目的pom.xml文件中,添加如下的profiles配置: ```xml dev true dev test test prod prod ``` - 这段XML定义了三个profiles:`dev`、`test`、`prod`,分别对应开发、测试和生产环境。 - `dev` profile 使用了 `true` 来设置默认激活的环境。 - 每个profile都定义了一个 `profilesActive` 属性,用来标识当前活跃的环境。 3. **创建配置文件**: 在项目的资源目录(一般是 `src/main/resources/`)下,创建针对每个环境的配置文件。例如: - `application-dev.properties`:开发环境配置文件。 - `application-test.properties`:测试环境配置文件。 - `application-prod.properties`:生产环境配置文件。 这些文件应包含各自环境的特定配置,如数据库连接信息、日志级别、服务端口等。 4. **使用配置文件**: 在代码中通过Spring Boot等框架加载配置文件时,根据当前激活的profile来加载相应的配置文件。例如,在Spring Boot中可以通过 `@PropertySource` 或者 `application.properties` 文件中的 `spring.profiles.active` 属性来指定使用的配置文件。 ```properties # application.properties spring.profiles.active=dev ``` 这样,当 `dev` profile 激活时,Spring Boot会加载 `application-dev.properties` 中的配置信息。 5. **构建和部署**: 在开发、测试和生产环境中,使用不同的配置文件进行构建和部署。例如,使用Maven命令进行构建时可以指定使用的profile: ```bash mvn clean install -Pdev # 使用dev profile构建 mvn clean install -Ptest # 使用test profile构建 mvn clean install -Pprod # 使用prod profile构建 ``` 这样可以确保在不同的环境中正确加载和使用相应的配置信息。 通过以上步骤,你可以根据需要配置并创建不同环境的配置文件,并在项目中使用Maven的profile功能来管理和切换这些配置。 不同环境对应启动命令不同: `mvn clean package -P prod` `java -jar Lade_DoingBLOG-1.0-SNAPSHOT.jar --spring.profiles.active=prod` 2024/8/17日志 备份一次数据库数据 解决图片后端自带的/dev-api和/pro-api对应的图片路劲,可以手动修改数据库。 还有另一种解决方案是修改前端底层代码,自动添加/dev-api或者是/pro-api。