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)

大家都在看

  • MySQL45讲之备库并行复制策略

    前言 本文主要介绍 MySQL 备库的并行复制策略。 为什么备库需要并行复制 如果主数据库有大量的更新操作,因为主数据库可以并发写入,而从数据库只能在单个线程中执行,那么从数据库的…

    数据库 2023年5月24日
    099
  • 04-MySQL锁

    数据库锁 1、SQL语言包括那几个部分 SQL语言包括 数据定义(DDL)、数据操纵(DML)、数据控制(DCL)和数据查询(DQL)四个部分 2、每部分都有哪些操作关键词 数据定…

    数据库 2023年6月16日
    093
  • 对象映射时 Integer 类型字段转换枚举处理麻烦 一个工具类搞定

    使用场景 当我们返回给前端所需的对象数据时,大多数情况可以直接使用 StructMap 映射实现自动转换,但碰到对象中的某些字段需要从 Integer 类型转换成对应枚举的时候,在…

    数据库 2023年6月6日
    098
  • 4_爬NMPA药监总局_动态加载_传ID

    http://scxk.nmpa.gov.cn:81/xk/ import requests url = ‘http://scxk.nmpa.gov.cn:81/xk/itowne…

    数据库 2023年6月11日
    0101
  • 获取字典中values值中最大的数,返回对应的keys

    1.字典中键值对的获取 print(data.values()) # 查看字典的值 print(data.keys()) # 查看字典的key 2.对字典中的值进行排序 sorte…

    数据库 2023年6月16日
    087
  • Go 接口:深入内部原理

    接口的基本概念不在这里赘述,详情请看第十六章:接口 nil 非空? package main func main() { var obj interface{} obj = 1 p…

    数据库 2023年6月6日
    0124
  • 实现一个简单的Database2(译文)

    前文回顾:实现一个简单的Database1(译文) 译注:cstsck在github维护了一个简单的、类似sqlite的数据库实现,通过这个简单的项目,可以很好的理解数据库是如何运…

    数据库 2023年6月11日
    0128
  • Tomcat总体架构(一)

    目录 一、Server 二、Connector 和 Container(实际为Engine) 三、Context 四、Host 五、Wrapper 六、Container(真正的C…

    数据库 2023年6月11日
    0112
  • 数据专家最常使用的 10 大类 Pandas 函数 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:http://www.showmeai.tech/tutorials/40📘 本文地址:http://www.showmea…

    数据库 2023年6月14日
    099
  • mysql精简单机版,免登录,可复制,不启动服务,与本机mysql无冲突

    突然有了个需要在本地使用的mysql需求,要求不用安装,随拷随用,不影响其他mysql服务,占用空间小.基于这种需求做了个精简版的mysql 首先下载mysql的zip安装包 wi…

    数据库 2023年5月24日
    096
  • day44-反射03

    Java反射03 3.通过反射获取类的结构信息 3.1java.lang.Class类 getName:获取全类名 getSimpleName:获取简单类名 getFields:获…

    数据库 2023年6月11日
    092
  • == 和 equals 的区别

    1. == 概念:==是一个比较运算符 == 既可以判断基本类型,又可以判断引用类型 ==判断基本类型时,判断的是值是否相等。示例:int i = 10; ==判断引用类型时,判断…

    数据库 2023年6月11日
    0116
  • java四种访问修饰符及各自的权限

    1.public,即共有的,是访问权限限制最宽的修饰符。被public修饰的类、属性、及方法不仅可以跨类访问,而且可以跨包访问。 2. protected,即保护访问权限,是介于p…

    数据库 2023年6月11日
    0107
  • JUC并发编程进阶!!

    1.知识点回顾及延伸 2.生产者消费者问题 3. 八锁问题 4.集合类线程不安全解决 5.Callable再理解 6.三大常用辅助类 6.1、 CountDownLatch 6.2…

    数据库 2023年6月16日
    0109
  • 05-ElasticSearch高级搜索

    * package com.coolman.hotel.test; import com.coolman.hotel.pojo.HotelDoc; import com.faste…

    数据库 2023年6月16日
    0104
  • day02-用户登录功能实现

    多用户即时通讯系统02 4.编码实现01 4.1功能实现-用户登录 4.1.1功能说明 因为还没有学习数据库,我们人为规定 用户名/id = 100,密码为 123456 就可以登…

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