[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-public-ostBIxAV":3,"public-project-articles-ostBIxAV":17},{"id":4,"uuid":5,"project_id":6,"title":7,"content":8,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},42,"ostBIxAV",39,"09. SpringBoot集成Mybatis实现增删改查","\nMysql 前置知识：[https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV19M4y1W7Uh](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV19M4y1W7Uh)\n\n## 增删改查数据\n\nuser 表\n\n```json\nCREATE TABLE `user` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名',\n  `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码',\n  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '姓名',\n  `phone` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '电话',\n  `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',\n  `address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地址',\n  `avatar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';\n```\n\n在 Navicat 里面创建数据库 **honey2024**\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692188549934-d37175af-f170-474c-a2b5-b9dade8cf6da.png#averageHue=%23fafafa&clientId=u2f15c6e8-0e9b-4&from=paste&height=552&id=u20cf52ee&originHeight=690&originWidth=1326&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=37464&status=done&style=none&taskId=u9ba344b0-e650-4f33-833e-3fe3663a076&title=&width=1060.8)\n\n## 增\n\n插入数据\nUserMapper\n\n```json\n@Insert(\"insert into `user` (username, password, name, phone, email, address, avatar) \" +\n            \"values (#{username}, #{password}, #{name}, #{phone}, #{email}, #{address}, #{avatar})\")\nvoid insert(User user);\n```\n\nUserService\n\n```json\n@Autowired\nUserMapper userMapper;\n\npublic void insertUser(User user) {\n    userMapper.insert(user);\n}\n```\n\nUserController\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692190561238-9c55bae3-2bb2-4f3d-9db1-23518f7e9565.png#averageHue=%232f2d2c&clientId=u2f15c6e8-0e9b-4&from=paste&height=109&id=u92180a98&originHeight=136&originWidth=471&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=11563&status=done&style=none&taskId=u7ebecd11-d8e2-4606-ad67-4bb9b8f52c7&title=&width=376.8)\n\n```json\n@Autowired\nUserService userService;\n\n\u002F**\n * 新增用户信息\n *\u002F\n@PostMapping(\"\u002Fadd\")\npublic Result add(@RequestBody User user) {\n    userService.insertUser(user);\n    return Result.success();\n}\n```\n\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692190012982-73d8b6f5-4367-4121-9a5e-ca38dd60273f.png#averageHue=%23fcfaf9&clientId=u2f15c6e8-0e9b-4&from=paste&height=431&id=u7bd3705c&originHeight=539&originWidth=1526&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=44930&status=done&style=none&taskId=u9d7698c6-9b7f-42f5-91d8-da4e5d9c0c1&title=&width=1220.8)\n\n遇到了一个小错误，\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692190050751-28960b56-c352-469a-8417-337e1d335bf5.png#averageHue=%23312f2e&clientId=u2f15c6e8-0e9b-4&from=paste&height=388&id=u688f352b&originHeight=485&originWidth=1516&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=155352&status=done&style=none&taskId=ub3d646d5-7bb6-4e8a-ba6d-d315c2f76b7&title=&width=1212.8)\n需要配置 username 和 password\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692190081078-1a34ae42-e30e-4aa5-aaa9-c2cbccf6cad6.png#averageHue=%23525142&clientId=u2f15c6e8-0e9b-4&from=paste&height=331&id=uf6a6968a&originHeight=414&originWidth=1463&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=61433&status=done&style=none&taskId=uefdf79da-8a69-4f0d-810e-b95481c2e4d&title=&width=1170.4)\n\n数据重复插入会出现错误\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692190616503-33478722-4feb-416f-a245-d60fee7ad383.png#averageHue=%23fdfdfd&clientId=u2f15c6e8-0e9b-4&from=paste&height=481&id=udf49d0f1&originHeight=601&originWidth=1011&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=35735&status=done&style=none&taskId=u3caa7ef6-68f8-4e42-baa7-662723db211&title=&width=808.8)\n学会看控制台的错误信息：\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692190632714-b0e34309-1015-4f49-8020-a6a1704b34c7.png#averageHue=%23322f2e&clientId=u2f15c6e8-0e9b-4&from=paste&height=453&id=u91e7fa83&originHeight=566&originWidth=1786&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=184776&status=done&style=none&taskId=uc66c32b7-6473-4bee-b86c-c143acc20eb&title=&width=1428.8)\n**Duplicate entry 'qing' for key 'username'**\n\n**更加优雅的方式处理接口数据**\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692191102568-b8922f4e-77fb-4b6b-8f33-4ee6b198b602.png#averageHue=%232c2c2b&clientId=u2f15c6e8-0e9b-4&from=paste&height=360&id=ua9cd414a&originHeight=450&originWidth=846&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=46957&status=done&style=none&taskId=u2858522e-1938-4df9-9cf7-93f97060344&title=&width=676.8)\n\n## 改\n\n根据 id 修改\nUserMapper\n\n```json\n@Update(\"update `user` set username = #{username}, password = #{password}, name= #{name}, phone = #{phone}, \" +\n        \"email = #{email}, address = #{address}, avatar = #{avatar} where id = #{id}\")\nvoid updateUser(User user);\n```\n\nUserService\n\n```json\npublic void updateUser(User user) {\n    userMapper.updateUser(user);\n}\n```\n\nUserController\n\n```json\n\u002F**\n * 修改用户信息\n *\u002F\n@PutMapping(\"\u002Fupdate\")\npublic Result update(@RequestBody User user) {\n    userService.updateUser(user);\n    return Result.success();\n}\n```\n\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692191420000-3b1098ad-8b88-418a-b699-a1354d1ba31c.png#averageHue=%23fcf8f7&clientId=u2f15c6e8-0e9b-4&from=paste&height=378&id=u6ed3ce86&originHeight=473&originWidth=1291&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=42137&status=done&style=none&taskId=ue6090ec2-9c03-4b30-bc4c-436fd3591e2&title=&width=1032.8)\n\n## 删\n\n- 单个删除\n\nUserMapper\n\n```json\n@Delete(\"delete from `user` where id = #{id}\")\nvoid deleteUser(Integer id);\n```\n\nUserService\n\n```json\npublic void deleteUser(Integer id) {\n    userMapper.deleteUser(id);\n}\n```\n\nUserController\n\n```json\n\u002F**\n * 删除用户信息\n *\u002F\n@DeleteMapping(\"\u002Fdelete\u002F{id}\")\npublic Result delete(@PathVariable Integer id) {\n    userService.deleteUser(id);\n    return Result.success();\n}\n```\n\n- 批量删除\n\nUserService\n\n```java\npublic void batchDeleteUser(List\u003CInteger> ids) {\n    for (Integer id : ids) {\n        userMapper.deleteUser(id);  \u002F\u002F 7  - 8\n    }\n}\n```\n\nUserController\n\n```java\n\u002F**\n * 批量删除用户信息\n *\u002F\n@DeleteMapping(\"\u002Fdelete\u002Fbatch\")\npublic Result batchDelete(@RequestBody List\u003CInteger> ids) {  \u002F\u002F  [7, 8]\n    userService.batchDeleteUser(ids);\n    return Result.success();\n}\n```\n\n接口类型错误\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692191786842-8f87d2db-2bba-4a83-8d4c-5c9c1fe32d19.png#averageHue=%23fdfcfb&clientId=u2f15c6e8-0e9b-4&from=paste&height=635&id=ub0529c3c&originHeight=794&originWidth=1361&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=58525&status=done&style=none&taskId=u0b044c50-9d34-48c6-9bbb-cd57929deae&title=&width=1088.8)\n\n## 查\n\n- 全部查询\n\n请求成功了，但是没返回数据？\n非常简单，因为你没设置数据！\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692192658782-6017dbcd-91ba-4494-b06f-896384d711f2.png#averageHue=%23fdfcfc&clientId=u2f15c6e8-0e9b-4&from=paste&height=598&id=u9130baa0&originHeight=748&originWidth=933&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=38320&status=done&style=none&taskId=ubae6de88-87f6-4632-9960-b9b6e08c929&title=&width=746.4)\n\n- 排序查询\n\nasc desc\n\nUserMapper\n\n```java\n @Select(\"select * from `user` order by id desc\")\nList\u003CUser> selectAll();\n```\n\nUserService\n\n```java\npublic List\u003CUser> selectAll() {\n    return userMapper.selectAll();\n}\n```\n\nUserController\n\n```java\n\u002F**\n * 查询全部用户信息\n *\u002F\n@GetMapping(\"\u002FselectAll\")\npublic Result selectAll() {\n    List\u003CUser> userList = userService.selectAll();\n    return Result.success(userList);\n}\n```\n\n- 单条件\n\n```java\n\u002F**\n * 根据ID查询用户信息\n *\u002F\n@GetMapping(\"\u002FselectById\u002F{id}\")\npublic Result selectById(@PathVariable Integer id) {\n    User user = userService.selectById(id);\n    return Result.success(user);\n}\n\npublic User selectById(Integer id) {\n    return userMapper.selectById(id);\n}\n\n@Select(\"select * from `user` where id = #{id} order by id desc\")\nUser selectById(Integer id);\n```\n\n- 多条件\n\n为什么会发生 500 错误？？\n\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692193287800-5df627b9-baea-4eb8-88f9-583676587f88.png#averageHue=%23fcfcfb&clientId=u2f15c6e8-0e9b-4&from=paste&height=536&id=u3acaa532&originHeight=670&originWidth=1024&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=50990&status=done&style=none&taskId=uc5d36724-5595-47f2-8c04-6ec4dd20fa8&title=&width=819.2)\n因为在数据库返回的时候，是返回了 6 条数据，但是你期待的查询结果是一个对象，这跟他的结果是违背的，所以报错了\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692193309190-6898f529-56f0-47b0-92f1-6f07c287f14b.png#averageHue=%23312f2e&clientId=u2f15c6e8-0e9b-4&from=paste&height=330&id=u1f618bb7&originHeight=413&originWidth=1628&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=141282&status=done&style=none&taskId=u0b1b0572-57a9-4e48-986d-af3403e3d73&title=&width=1302.4)\n\n一个很典型的错误，sql 写错了，但是自己没发现\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692193688707-c9c65d0b-145e-4aa0-8b13-723cfbf380d5.png#averageHue=%23322f2e&clientId=u2f15c6e8-0e9b-4&from=paste&height=224&id=u2ea77a95&originHeight=280&originWidth=1515&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=83143&status=done&style=none&taskId=u86676671-af9c-4421-8152-f0fcd90f83c&title=&width=1212)\n如果看到这个 **; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException**\n**那肯定是你的 sql 错了，要么是字段不合法，要么是 sql 语句写错了**\n\n注意：参数加上**@Param **注解\n\n```java\n @Select(\"select * from `user` where username = #{username} and name = #{name} order by id desc\")\n    List\u003CUser> selectByMore(@Param(\"username\") String username, @Param(\"name\") String name);\n```\n\n- 模糊查询\n\n```java\n@Select(\"select * from `user` where username like concat('%', #{username}, '%') and name like concat('%', #{name}, '%') order by id desc\")\nList\u003CUser> selectByMo(String username, String name);\n```\n\n- 分页多条件模糊查询\n\n计算 limit：(pageNum - 1) \\* pageSize\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1692194664899-27d43a6c-03da-4f58-bce8-49392054e5fd.png#averageHue=%23fefbfb&clientId=u2f15c6e8-0e9b-4&from=paste&height=97&id=u4205ece8&originHeight=121&originWidth=745&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8351&status=done&style=none&taskId=u898574e4-abc0-458a-bd84-bc79d34d18c&title=&width=596)\nUserMapper\n\n```java\n@Select(\"select * from `user` where username like concat('%', #{username}, '%') and name like concat('%', #{name}, '%') order by id desc limit #{skipNum}, #{pageSize}\")\nList\u003CUser> selectByPage(@Param(\"skipNum\") Integer skipNum, @Param(\"pageSize\")Integer pageSize, @Param(\"username\") String username, @Param(\"name\") String name);\n\n@Select(\"select count(id) from `user` where username like concat('%', #{username}, '%') and name like concat('%', #{name}, '%') order by id desc\")\nint selectCountByPage(@Param(\"username\") String username, @Param(\"name\") String name);\n```\n\nUserService\n\n```java\npublic Page\u003CUser> selectByPage(Integer pageNum, Integer pageSize, String username, String name) {\n    Integer skipNum = (pageNum - 1) * pageSize;  \u002F\u002F 计算出来  1 -> 0,5    2 -> 5,5   3 -> 10,5\n\n    Page\u003CUser> page = new Page\u003C>();\n    List\u003CUser> userList = userMapper.selectByPage(skipNum, pageSize, username, name);\n    Integer total = userMapper.selectCountByPage(username, name);\n    page.setTotal(total);\n    page.setList(userList);\n    return page;\n}\n```\n\nUserController\n\n```java\n\u002F**\n * 多条件模糊查询用户信息\n * pageNum 当前的页码\n * pageSize 每页查询的个数\n *\u002F\n@GetMapping(\"\u002FselectByPage\")\npublic Result selectByPage(@RequestParam Integer pageNum,\n                           @RequestParam Integer pageSize,\n                           @RequestParam String username,\n                           @RequestParam String name) {\n    Page\u003CUser> page = userService.selectByPage(pageNum, pageSize, username, name);\n    return Result.success(page);\n}\n```\n","coding",1,4190,64,"2025-04-08 11:27:13","2026-05-03 22:49:02","【青哥带小白做毕设2024】完整教程资料汇总","qingge-graduation-project-2024",{"project":18,"items":19},{"id":6,"title":15,"slug":16},[20,28,35,42,49,56,63,69,76,83,84,91,98,105,112,119,126,133,140,147,154,161,168],{"id":21,"uuid":22,"project_id":6,"title":23,"type":9,"status":10,"public_enabled":10,"views":24,"sort":25,"created_at":26,"updated_at":27,"project_title":15,"project_slug":16},33,"R1oMCsCX","00. 从0开始带小白做SpringBoot+Vue+uniapp微信小程序实战项目",12130,55,"2025-04-08 11:28:17","2026-05-07 15:33:28.189425+00",{"id":29,"uuid":30,"project_id":6,"title":31,"type":9,"status":10,"public_enabled":10,"views":32,"sort":33,"created_at":34,"updated_at":14,"project_title":15,"project_slug":16},34,"s3u3u8W7","01. 网页布局技巧",3326,56,"2025-04-08 11:28:13",{"id":36,"uuid":37,"project_id":6,"title":38,"type":9,"status":10,"public_enabled":10,"views":39,"sort":40,"created_at":41,"updated_at":14,"project_title":15,"project_slug":16},35,"21zUHQYS","02. JavaScript入门",2017,57,"2025-04-08 11:27:55",{"id":43,"uuid":44,"project_id":6,"title":45,"type":9,"status":10,"public_enabled":10,"views":46,"sort":47,"created_at":48,"updated_at":14,"project_title":15,"project_slug":16},36,"4XVgY9Ti","03. Vue脚手架搭建",3719,58,"2025-04-08 11:27:46",{"id":50,"uuid":51,"project_id":6,"title":52,"type":9,"status":10,"public_enabled":10,"views":53,"sort":54,"created_at":55,"updated_at":14,"project_title":15,"project_slug":16},37,"S8vLLLvk","04. Git速成，推送代码到云端",1585,59,"2025-04-08 11:27:41",{"id":57,"uuid":58,"project_id":6,"title":59,"type":9,"status":10,"public_enabled":10,"views":60,"sort":61,"created_at":62,"updated_at":14,"project_title":15,"project_slug":16},38,"9EbwnGDp","05. 网页布局神器ElementUI速成",2670,60,"2025-04-08 11:27:37",{"id":6,"uuid":64,"project_id":6,"title":65,"type":9,"status":10,"public_enabled":10,"views":66,"sort":67,"created_at":68,"updated_at":14,"project_title":15,"project_slug":16},"tmzahWer","06. Vue管理系统速成",3744,61,"2025-04-08 11:27:32",{"id":70,"uuid":71,"project_id":6,"title":72,"type":9,"status":10,"public_enabled":10,"views":73,"sort":74,"created_at":75,"updated_at":14,"project_title":15,"project_slug":16},40,"2agqAUQK","07. SpringBoot速成",3654,62,"2025-04-08 11:27:27",{"id":77,"uuid":78,"project_id":6,"title":79,"type":9,"status":10,"public_enabled":10,"views":80,"sort":81,"created_at":82,"updated_at":14,"project_title":15,"project_slug":16},41,"SXPAzgy7","08. Http扫盲，让小白也能听懂",2337,63,"2025-04-08 11:27:20",{"id":4,"uuid":5,"project_id":6,"title":7,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},{"id":85,"uuid":86,"project_id":6,"title":87,"type":9,"status":10,"public_enabled":10,"views":88,"sort":89,"created_at":90,"updated_at":14,"project_title":15,"project_slug":16},43,"6Sv7afpa","10. Vue封装前后端数据交互工具",3716,65,"2024-04-16 02:33:13",{"id":92,"uuid":93,"project_id":6,"title":94,"type":9,"status":10,"public_enabled":10,"views":95,"sort":96,"created_at":97,"updated_at":14,"project_title":15,"project_slug":16},44,"d53BPIQs","11. Vue登录（含验证码）、注册页面开发",4867,66,"2024-04-16 02:33:08",{"id":99,"uuid":100,"project_id":6,"title":101,"type":9,"status":10,"public_enabled":10,"views":102,"sort":103,"created_at":104,"updated_at":14,"project_title":15,"project_slug":16},45,"m033ng06","12. SpringBoot集成JWT token实现权限验证",3243,67,"2024-04-16 02:33:00",{"id":106,"uuid":107,"project_id":6,"title":108,"type":9,"status":10,"public_enabled":10,"views":109,"sort":110,"created_at":111,"updated_at":14,"project_title":15,"project_slug":16},46,"7xzyVD06","13. SpringBoot+Vue实现单文件、多文件上传和下载",2784,68,"2024-04-16 02:32:52",{"id":113,"uuid":114,"project_id":6,"title":115,"type":9,"status":10,"public_enabled":10,"views":116,"sort":117,"created_at":118,"updated_at":14,"project_title":15,"project_slug":16},47,"BdOLUenp","14. 多角色登录（Vue-Router路由守卫）",2318,69,"2024-04-16 02:32:39",{"id":120,"uuid":121,"project_id":6,"title":122,"type":9,"status":10,"public_enabled":10,"views":123,"sort":124,"created_at":125,"updated_at":14,"project_title":15,"project_slug":16},48,"2Wkx3igg","15. Vue个人信息修改、修改密码、重置密码",2092,70,"2024-04-16 02:32:33",{"id":127,"uuid":128,"project_id":6,"title":129,"type":9,"status":10,"public_enabled":10,"views":130,"sort":131,"created_at":132,"updated_at":14,"project_title":15,"project_slug":16},49,"BDvVa4By","16. SpringBoot+Vue管理系统实现增删改查",2598,71,"2024-04-16 02:32:29",{"id":134,"uuid":135,"project_id":6,"title":136,"type":9,"status":10,"public_enabled":10,"views":137,"sort":138,"created_at":139,"updated_at":14,"project_title":15,"project_slug":16},50,"FJVl0rCu","17. SpringBoot+Vue实现数据的批量导入和导出",1684,72,"2024-04-16 02:32:26",{"id":141,"uuid":142,"project_id":6,"title":143,"type":9,"status":10,"public_enabled":10,"views":144,"sort":145,"created_at":146,"updated_at":14,"project_title":15,"project_slug":16},51,"FvW9oHgj","18. SpringBoot+Vue项目部署上线",2845,73,"2024-04-16 02:32:22",{"id":148,"uuid":149,"project_id":6,"title":150,"type":9,"status":10,"public_enabled":10,"views":151,"sort":152,"created_at":153,"updated_at":14,"project_title":15,"project_slug":16},52,"xyqrxxiR","19. SpringBoot+Vue集成富文本编辑器",1499,74,"2024-04-16 02:32:18",{"id":155,"uuid":156,"project_id":6,"title":157,"type":9,"status":10,"public_enabled":10,"views":158,"sort":159,"created_at":160,"updated_at":14,"project_title":15,"project_slug":16},53,"XAaCXz8W","20. SpringBoot+Vue集成系统公告",1043,75,"2024-04-16 02:32:14",{"id":162,"uuid":163,"project_id":6,"title":164,"type":9,"status":10,"public_enabled":10,"views":165,"sort":166,"created_at":167,"updated_at":14,"project_title":15,"project_slug":16},54,"2havlmaC","21. SpringBoot+Vue集成AOP系统日志",1159,76,"2024-04-16 02:32:11",{"id":25,"uuid":169,"project_id":6,"title":170,"type":9,"status":10,"public_enabled":10,"views":171,"sort":172,"created_at":173,"updated_at":14,"project_title":15,"project_slug":16},"ObvLqJdX","22. SpringBoot+Vue实现Echarts数据报表（柱状图、饼图、折线图）",1688,99,"2024-04-16 02:30:25"]