# 面试用 **Repository Path**: xiao_ming007/comment ## Basic Information - **Project Name**: 面试用 - **Description**: 面试用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-31 - **Last Updated**: 2023-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 面试-评论树 ### 项目结构 > springboot > ### 初始化 ```` CREATE TABLE `articles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `content` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4; CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(255) NOT NULL, `article_id` int(11) NOT NULL, `parent_comment_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `article_id` (`article_id`), KEY `parent_comment_id` (`parent_comment_id`), CONSTRAINT `comments_ibfk_2` FOREIGN KEY (`parent_comment_id`) REFERENCES `comments` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4; INSERT INTO `world`.`articles`(`id`, `title`, `content`) VALUES (1, '1', '1'); INSERT INTO `world`.`comments`(`id`, `content`, `article_id`, `parent_comment_id`) VALUES (1, '评论1', 1, NULL); INSERT INTO `world`.`comments`(`id`, `content`, `article_id`, `parent_comment_id`) VALUES (3, '评论3', 1, NULL); INSERT INTO `world`.`comments`(`id`, `content`, `article_id`, `parent_comment_id`) VALUES (4, '评论4,上级为1', 1, 1); INSERT INTO `world`.`comments`(`id`, `content`, `article_id`, `parent_comment_id`) VALUES (5, '评论5,上级为4', 1, 4); INSERT INTO `world`.`comments`(`id`, `content`, `article_id`, `parent_comment_id`) VALUES (6, '评论6,上级为4', 1, 4); ```` ### 页面 > ./src/main/resources/static/comments.html > ### 接口 保存 ```` curl -X POST '127.0.0.1:8080/comment/save' -H 'Content-Type: application/json' --data-raw '{"articleId":1,"commentId":4,"content":"123"}' ```` 修改 ```` curl -X POST '127.0.0.1:8080/comment/update' -H 'Content-Type: application/json' --data-raw '{"articleId":1,"commentId":4,"content":"123","id":8}' ```` 查询评论树,最后一个参数为文章id ```` curl -X GET 'http://localhost:8080/comment/getTree/1' ```` ### 设计模式 策略模式,针对于新增和修改时校验使用不同策略 策略接口:com.example.demo.strategy.save.SaveCheckStrategy 使用策略的切面:com.example.demo.aspect.SaveCheckAspect 标记注解:com.example.demo.annotation.SaveCheck ### 展示 ![Alt Text](data:image/jpeg;base64,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MFCsgsQ4PKzXbQJQU3PbrI9t4SNRVaCYX0agAADOk0ARtNeB4noZBjKD4eVA0bzjngbT7XIzgWIVPnr6A/KpwfQm4WZzW96hWOnfYajvVKwfZwNIo152KRA1298gxAkUAMB5ESiC9jlQTA10Fwfx2bsGnZAxqoV352fkw8iSYVjZpjLnpPORrbm7DfW8dv25c5zrL36OAADOgkARtJc9ztxNSHZ7V+Ak0sA7H3outs3uOAAAXCYCRZAeAQBAoAjTIwAACBRhegQAAIEiTI8AACBQhOkRAAAEijA9AgCAQBGmRwAAECjC9AgAAAJFmB4BAECgCNMjAAAIFGF6BAAAgSJMjwAAIFCE6REAAASKMD0CAIBAEaZHAAAQKML0CAAAAkWYHgEAQKAI0yMAAAgUYXoEAACBIkyPAAAgUITpEQAABIowPQIAgEARpkcAABAowvQIAAACRZgeAQBAoAjTIwAACBRhegQAAIEiTI8AACBQhF2WHpVSSimllDrNEiiCLkOPAABw2gSKIIECAAAEijCBAgAABIowgQIAAASKMIECAAAEijCBAgAABIowgQIAAASKMIECAAAEijCBAgAABIowgQIAAASKMIECAAAEijCBAgAABIowgQIAAASKMIECAAAEijCBAgAABIowgQIAAASKMIECAAAEijCBAgAABIowgQIAAASKMIECAAAEirDUo1JKKaWUUle9BAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBMoAAAAMIubKBQSimllFJKXfy6kIECAAC4HAQKAAAgTKAAAADCBAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACDsQgaK3J/0VkoppZRSSl28urCBAgAAuPgECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBMoAAAAMIECgAAIEygAAAAwgQKAAAgTKAAAADCBAoAACBsDwLF7eLogcPiuHkUcfvGteLajdvNo7Hj6wfFwcHJ9gEAAPtoTwJFOeB/4Kj8V60OAEu1Dgi3bx0Vh2na9UxkuHlYLlsGjrSP3PxGCiXd7c8FFAAA2Bd78pGnJlRMDPirwX4ncOQdl6HiWnF0q3mYlEHjWhkODm+mB2l++++BMnT0AkQVQoQKAAD23/58h6Ia/Nd3HdIdiu7AfxQo0rJLAaMJE71Q0AsYc+YDDgAA7Iv9/FJ2dYeg85GmXqCoB/tzdw/ajy9lg0MuaIwIFAAAXA37GShK6S5FO+jvBopcuOh+76H6/sXS3YuFwFAHEl/iBgBg/13yQDEOBCudjzWtQ0RafvA9iUY3gFSqOxHjUDD8OFWrCiJNH+5MAABwVezVl7KnPobUvyuRtxwo2vCSfsXsQmDwpWwAAK6IvQsUvTsFS9UJGXOBov4IU7n8FncefOwJAICrwB2KRj5QNMEj8hGm5u9X5D5eBQAA+0KgaCx/5KkjhYWF7blDAQDAVbCHgeK4OBzcUdgqUJRhofrvTKCotrfaR9r3YDnfoQAA4IrYr0BxvQwDmYH8cqCo1+99r2ImUIzuZqQQ0348qiofdQIA4GrYq0AxNZBfDBRVeBiu2wkZo/JRJgAASPYjUMx936G0yUeeAACA7e3JHQoAAOA8CBQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQNiFDRRKKaWUUkqpi18XMlAAAACXg0ABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAmEABAACECRQAAECYQAEAAIQJFAAAQJhAAQAAhAkUAABAUFH8f0sybdSGBhZlAAAAAElFTkSuQmCC)