Spring Boot + MyBatis 多模块项目搭建教程

一、前言

1、开发工具及系统环境

*
– IDE:IntelliJ IDEA 2020.2.2
– 系统环境:Windows

2、项目目录结构

*
– biz层:业务逻辑层
– dao层:数据持久层
– web层:请求处理层

二、搭建步骤

1、创建父工程

选择Spring Initializr,Initializr默认选择Default,点击Next

Spring Boot + MyBatis 多模块项目搭建教程

点击Next

Spring Boot + MyBatis 多模块项目搭建教程

这一步不需要选择直接Next

Spring Boot + MyBatis 多模块项目搭建教程

点击Finish创建项目

Spring Boot + MyBatis 多模块项目搭建教程

最终得到的项目目录结构如下,删除无用的.mvn目录、src目录、mvnw及mvnw.cmd文件,最终只留.gitignore和pom.xml

Spring Boot + MyBatis 多模块项目搭建教程

2、创建子模块

选择项目根目录shop右键呼出菜单,选择New -> Module

Spring Boot + MyBatis 多模块项目搭建教程

选择Maven,点击Next

Spring Boot + MyBatis 多模块项目搭建教程

填写ArifactId,Module name增加横杠提升可读性,点击Finish

Spring Boot + MyBatis 多模块项目搭建教程

同理添加shop-dao、shop-web子模块,最终得到项目目录结构如下图

Spring Boot + MyBatis 多模块项目搭建教程

3、运行项目

在shop-web层创建com.dasheng.shop.web包(注意:这是多层目录结构并非单个目录名,com >> dasheng >> shop>> web)并添加入口类ShopWebApplication.java

@SpringBootApplication
public class ShopWebApplition {
    public static void main(String[] args) {
        SpringApplication.run(ShopWebApplition.class, args);
    }
}

在com.dasheng.shop.web包中新建controller文件目录并新建一个controller,添加test方法测试接口是否可以正常访问

@RestController
@RequestMapping("demo")
public class Controller {

    @GetMapping("test")
    public String test() {
        return "Hello World!";
    }
}

运行ShopWebApplication类中的main方法启动项目,默认端口为8080

Spring Boot + MyBatis 多模块项目搭建教程

访问http://localhost:8080/demo/test得到如下效果

Spring Boot + MyBatis 多模块项目搭建教程

以上虽然项目能正常启动,但是模块间的依赖关系却还未添加,下面继续完善。

4、 配置模块间的依赖关系

各个子模块的依赖关系:

biz层依赖dao层,

web层依赖biz层

父pom文件中声明所有子模块依赖(dependencyManagement及dependencies的区别自行查阅文档)

com.dasheng.shop            shop-biz            0.0.1-SNAPSHOT                            com.dasheng.shop            shop-dao            0.0.1-SNAPSHOT                            com.dasheng.shop            shop-web            0.0.1-SNAPSHOT

在shop-web层中的pom文件中添加shop-biz依赖

com.dasheng.shop
        shop-biz

在shop-biz层中的pom文件中添加shop-dao依赖

com.dasheng.shop
        shop-dao

5. web层调用biz层接口测试

在shop-biz层创建com.dasheng.shop.biz包,添加service目录并在其中创建DemoService接口类

public interface DemoService {
    String test();
}
@Service("DemoService")
public class DemoServiceImpl implements DemoService {

    @Override
    public String test() {
        return null;
    }
}

com.dasheng.biz.web.controllerController通过@Autowired注解注入DemoService,修改DemoController的test方法使之调用DemoService的test方法,最终如下所示:

@Autowired
    private DemoService demoService;
@GetMapping("test2")
    public String test2() {
        return demoService.test();
    }

再次运行ShopWebApplication类中的main方法启动项目,发现如下报错

csharp;gutter:true;</p> <hr /> <p>APPLICATION FAILED TO START</p> <hr /> <p>Description:</p> <p>Field demoService in com.dasheng.biz.web.controller.Controller required a bean of type 'com.dasheng.biz.service.DemoService' that could not be found.</p> <p>The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true)</p> <p>Action:</p> <p>Consider defining a bean of type 'com.dasheng.biz.service.DemoService' in your configuration.</p> <p>Process finished with exit code 1</p> <pre><code> 原因是找不到DemoService类,此时需要在ShopWebApplication入口类中增加包扫描,设置@SpringBootApplication注解中的scanBasePackages值为com.dasheng.shop,最终如下所示 ![Spring Boot + MyBatis 多模块项目搭建教程](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2151015-20211121213450201-1666173579.png) shop-web的pom加入 </code></pre> <p>org.mybatis.spring.boot mybatis-spring-boot-starter 1.1.1</p> <pre><code> mysql mysql-connector-java runtime 5.1.27 org.mybatis mybatis-spring 1.3.2 </code></pre> <pre><code> ![Spring Boot + MyBatis 多模块项目搭建教程](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2151015-20211121213542959-629115408.png) applicatio.yml配置 新建applicatio.yml配置文件:https://blog.csdn.net/weixin_44848573/article/details/106445457 </code></pre> <p>spring: datasource: driver-class-name: com.mysql.jdbc.Driver username: root password: root url: jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true</p> <pre><code> </code></pre> <p>@SpringBootApplication(scanBasePackages = "com.dasheng.biz") @MapperScan("com.dasheng.biz.dao") public class ShopWebApplition { public static void main(String[] args) { SpringApplication.run(ShopWebApplition.class, args); } }

完成!!

Spring Boot + MyBatis 多模块项目搭建教程

业务层直接调用(@Autowired )dao层(Mybatis)就完事了这不在叙述了,因为没有到入实体,项目放到gitee了,有需要的同学可以下载哦!

https://gitee.com/diaoyulin/shop.git

Original: https://www.cnblogs.com/diaoyulin/p/15586139.html
Author: yl_diao
Title: Spring Boot + MyBatis 多模块项目搭建教程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576312/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Django设置跨域访问

    Django设置跨域访问 pip install django-cors-headers (2) settings.py 配置如下 INSTALLED_APPS = [ # ‘dj…

    数据库 2023年6月14日
    0126
  • 1_Html

    一. 引言 1.1 HTML概念 网页, 是网站中的一个页面, 是构成网站的基本元素, 是承载各种网站应用的平台. 通俗的说, 网站就是由网页组成的, 通常我们看到的网页都是以ht…

    数据库 2023年6月11日
    0125
  • 设计模式之(11)——享元模式

    继续把我们的设计模式捡起,希望我能坚持完这个系列吧,下面我们就进入正题吧。 在软件开发过程中,我们需要重复使用某个对象的时候,如果重复地new这个对象,不停地申请内存空间,会造成内…

    数据库 2023年6月14日
    0105
  • java使用EasyExcel导入导出excel

    使用alibab的EasyExce完成导入导出excel 一、准备工作 1、导包 org.apache.poi poi 3.17 org.apache.poi poi-ooxml-…

    数据库 2023年6月6日
    0132
  • 探究MySQL中SQL查询的成本

    成本 什么是成本,即SQL进行查询的花费的时间成本,包含IO成本和CPU成本。 IO成本:即将数据页从硬盘中读取到内存中的读取时间成本。通常1页就是1.0的成本。 CPU成本:即是…

    数据库 2023年5月24日
    0133
  • 面试连环炮系列(二十八):数据库读写分离的目的是什么?

    1. 数据库读写分离的目的是什么? 通常,商业系统读得更多,写得更少。读写分离将读写操作分散到不同的节点,可以小幅提升写性能,大幅提升读性能。通常在数据库中采用一主多从的方式,主数…

    数据库 2023年5月24日
    0144
  • docker 搭建php 开发环境 添加扩展redis、swoole、xdebug

    docker-compose搭建lnmp 先决条件 首先需要安装docker 安装docker-compost 1、创建lnmp工作目录 #创建三个目录 mkdir lnmp &a…

    数据库 2023年6月11日
    0128
  • 工具 | 如何对 MySQL 进行 TPC-C 测试?

    作者:丁源 RadonDB 测试负责人负责 RadonDB 云数据库、容器化数据库的质量性能测试,迭代验证。对包括云数据库以及容器化数据库性能和高可用方案有深入研究。 |背景 根据…

    数据库 2023年5月24日
    0128
  • CenoOS 7环境下编译OpenJDK8

    一、准备工作 1.1、不再使用”$make sanity”来检查编译环境,而是改用”$./configure” 1.2、不再使用an…

    数据库 2023年6月9日
    0120
  • 21浙比武

    可以将获得的windows镜像先挂载获取SAM和SYSTEM注册表文件,然后使用mimikatz 提取windows的密码ntml哈希值 <span class=”ne-te…

    数据库 2023年6月11日
    0118
  • SNMP基础简介

    近来,公司产品开发涉及到SNMP方面的知识, 在此作一些总结,或许对您现在或者将来有用。 在目前越来越复杂的网络环境中,整个环境有各种各样的网络设备,为了能更好的对这些设备进行管理…

    数据库 2023年6月11日
    0125
  • 如何设计一个更通用的查询接口

    临近放假,手头的事情没那么多,老是摸鱼也不好,还是写写博客吧。 今天来聊聊: 如何设计一个通用的查询接口。 首先,我们从一个简单的场景开始。现在,我需要一个订单列表,用来查询【我的…

    数据库 2023年6月6日
    0142
  • 定时调度的线程池

    定时调度线程池 当我们需要定时进行线程的调度 @Slf4j public class Test5 { public static void main(String[] args) …

    数据库 2023年6月11日
    0107
  • Vue 2.0 基础

    知识点 1.是一个MVVM框架 由MVC架构衍生,分为View(视图层)、ViewModel(数据视图层)、Model(数据层),MVVM 最标志性的特性就是 数据绑定,实现数据驱…

    数据库 2023年6月11日
    0137
  • MySQL启动过程详解四:crash recovery

    当 MySQL关闭后,重启MySQL时,会进行 crash recovery操作,这里分析一下MySQL是如何进行的: 首先在启动Innodb存储引擎时会回滚事务系统的事务列表中未…

    数据库 2023年6月9日
    0122
  • sed与awk命令

    1.1 sed命令语法 在看单个命令以前,需要回顾一下关于所有sed命令的两点语法。在上一个章中,我们介绍了其大部分内容。行地址对于任何命令都是可选的。它可以使一个模式,被描述为由…

    数据库 2023年6月14日
    0143
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球