springBoot+mybaties后端多层架构的实现示例

本文主要介绍了springBoot+mybaties后端多层架构的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前期准备

1.建立一个springBoot项目

2.导入相关的pom依赖

  4.0.0 org.springframework.bootspring-boot-starter-parent2.7.0com.exampleetf0.0.1-SNAPSHOTetfetf 1.83.4.2  com.alibabafastjson1.2.75 com.baomidoumybatis-plus-boot-starter${mybatis-plus.version} mysqlmysql-connector-java8.0.28 org.projectlomboklombok1.18.4provided org.springframework.bootspring-boot-starter-web org.springframework.bootspring-boot-starter-testtest org.projectlomboklombokRELEASEcompile   org.springframework.bootspring-boot-maven-plugin

建立相关目录

说明:

各层名称说明补充
controller与前端交互的接口部分 
service层业务逻辑主要写的地方 
mapper层mapper接口,对应mybatis的sql.xml 
mapper.xml层在resource中,mybaites自动将数据返回给mapper层 
dao与数据库1v1对应的类,驼峰-》对应数据库的下划线 

resource中的目录

idea下载安装插件

lombok

mybaits-tool(任意工具都可以plugin里很多,主要用于xml与mapper跳转)

配置mybais-config.xml

       

dao层案例:

package com.example.etf.story.dao; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data public class TestStory { private int storyId; private String initInfo; private String storyName; private String storyType; private int status; private String creater; private String auditor; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") private Date updateTime; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") private Date createTime; }

数据库建表案例

附送他的建表语句:

SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for test_story -- ---------------------------- DROP TABLE IF EXISTS `test_story`; CREATE TABLE `test_story`  ( `story_id` int(0) NOT NULL AUTO_INCREMENT COMMENT '第一层id', `init_info` json NOT NULL COMMENT '初始信息', `story_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', `story_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '属于种类,学习,游戏', `status` int(0) NULL DEFAULT NULL COMMENT '状态,0未发布,1未审核,2不通过,3审核通过,4失效', `creator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '作者', `auditor` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '审核人', `update_time` timestamp(0) NULL DEFAULT NULL COMMENT '更新时间', `create_time` timestamp(0) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`story_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;

Paramr案例

(前端字段交互部分)

例:入口(查询条件)

package com.example.etf.story.paramer; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.ArrayList; import java.util.List; @Data public class StorySelectParam { private int pageNum=1; private int pageSize=8; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") private List updateTime; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") private List createTime; private String creator; private String storyName; private String storyType; private int sqlStart;//limit的开始 private int sqlEnd;//limit的结束 }

返回前端内容(页码以及本次总条数,用于分页)

package com.example.etf.story.paramer; import com.example.etf.story.dao.TestStory; import lombok.Data; import java.util.List; @Data public class StoriesParam { private List testStories; private int total; private int pageNum; private int  pageSize; }

Controller层案例

package com.example.etf.story.controller; import com.example.etf.story.dao.TestStory; import com.example.etf.story.paramer.StoriesParam; import com.example.etf.story.paramer.StorySelectParam; import com.example.etf.story.service.TestClientService; import com.example.etf.story.service.TestEditorService; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @Controller @RestController public class TestClientController { @Resource private TestClientService clientService; //获取所有已发布story @PostMapping("/selectStorysByPublic") @ResponseBody public StoriesParam selectStorysByPublic(@RequestBody StorySelectParam storySelectParam){ return clientService.selectStorysByPublic(storySelectParam); } }

Service层案例

package com.example.etf.story.service; import com.example.etf.controller.SqlSessionF; import com.example.etf.story.dao.TestStory; import com.example.etf.story.mapper.TestClientMapper; import com.example.etf.story.paramer.StoriesParam; import com.example.etf.story.paramer.StorySelectParam; import org.springframework.stereotype.Service; import java.util.List; @Service public class TestClientService { public StoriesParam selectStorysByPublic(StorySelectParam storySelectParam){ TestClientMapper mapper = new SqlSessionF().getSqlSession().getMapper(TestClientMapper.class); int pageNum = storySelectParam.getPageNum(); int pageSize = storySelectParam.getPageSize(); if(pageNum==0 || pageSize==0){ storySelectParam.setSqlStart(0); storySelectParam.setSqlEnd(8); }else { storySelectParam.setSqlStart((pageNum - 1) * pageSize); storySelectParam.setSqlEnd(pageNum * pageSize); } System.out.println(storySelectParam); List testStories = mapper.selectStorysByPublic(storySelectParam); StoriesParam storiesParam = new StoriesParam(); storiesParam.setTestStories(testStories); storiesParam.setPageNum(pageNum); storiesParam.setPageSize(pageSize); storiesParam.setTotal(mapper.getTotal(storySelectParam)); return storiesParam; } }

Mapper层案例

package com.example.etf.story.mapper; import com.example.etf.story.dao.TestStory; import com.example.etf.story.dao.TestStoryStage; import com.example.etf.story.paramer.StoriesParam; import com.example.etf.story.paramer.StorySelectParam; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Component; import java.util.List; @Mapper @Component public interface TestClientMapper { //分页查询所有故事 List selectStorysByPublic(StorySelectParam storySelectParam); int getTotal(StorySelectParam storySelectParam);//总数用于分页 }

SQL.xml案例

(resource下的mapper)

TestClientMapper.xml

  

同志们辛苦了,新手都会觉得为什么要用这个?这么复杂。一个类不好吗?

对于老手都能理解(当你做项目后,就知道,一个项目的简单模块,就有几十个接口。轻松维护,多人协同,第一次搭建稍微麻烦点,后续开发异常舒服)

 到此这篇关于springBoot+mybaties后端多层架构的实现示例的文章就介绍到这了,更多相关springBoot mybaties多层架构内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是springBoot+mybaties后端多层架构的实现示例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java