maven聚合工程整合springboot+mybatisplus遇到的问题

news2024/11/19 15:35:59

前言(可以直接跳过看下面解决方法)

项目结构

两个module:

yema-terminal-boot 是springboot项目,子包有:controller、service、dao 等等。属于经典三层架构。那么,该module可以理解为是一个单体项目,采用MVC软件设计模式+三层体系的编程思想构建而成

yema-common 的作用,就是存放一些公用的资源,任何公用的都放这里,除了常用自定义工具类,还包括接口!然后该module的pom.xml文件中定义了整个项目所需要的依赖jar包。这样做,yema-terminal-boot 的pom.xml中只需要依赖 yema-common 即可。

为什么这样设计两个module?

也许,市面上的Maven聚合工程,挺多人是这样弄的,比如:

yema-terminal-boot

yema-service

yema-dao

yema-common

这样也可以,就是有个问题。当我再次新建一个module作为另一个单体项目时,那么这个单体项目的业务层和持久层,都得写yema-service、yema-dao 中。当业务多了,项目经手的程序员多了,可能会出现乱调用现象。就是说yema-service 中的某个接口,其实是只服务于其中一个单体项目,另一个单体项目是不能用的。但是却调用了,虽然功能也实现了,但给以后埋下了个地雷。

而我目前这种只用两个module,就是为了强制规范。是这个项目的就这个项目里写,不要偷懒去复用。虽然工作量多了点,但以后排查与修改问题就好很多。(我就接手了这种项目,生产支付调用问题,发现多个springboot启动类调用到,头皮发麻,改一下,要测试多个项目)

整合

父pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yema</groupId>
    <artifactId>YMRoot</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>yema-common</module>
        <module>yema-terminal-boot</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!-- 继承说明:这里继承SpringBoot提供的父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.yema</groupId>
                <artifactId>yema-common</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

yema-terminal-boot的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>YMRoot</artifactId>
        <groupId>com.yema</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>yema-terminal-boot</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.yema</groupId>
            <artifactId>yema-common</artifactId>
        </dependency>
    </dependencies>

    <build>
        <finalName>ym-terminal-boot</finalName>
        <plugins>
            <plugin>
                <!--该插件主要用途:可执行的 JAR / WAR  -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

yema-common的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>YMRoot</artifactId>
        <groupId>com.yema</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>yema-common</artifactId>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions><!-- 去掉springboot默认配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--引入log4j2启动日志打印-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <!--连接sqlserver-->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- 以简单的注解形式来简化java代码,提高开发人员的开发效率。Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--  json处理 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>
        <!--  Apache工具包   -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <!-- 配置阿里数据库连接池,要配置log4j12这个包,不然报错 start        -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>
        <!-- 配置阿里数据库连接池,要配置log4j12这个包,不然报错 end        -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
        <!--   mybatisplus 持久层框架 start     -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
        <!-- 配置分页乐观锁插件时需要 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.4.2</version>
        </dependency>
        <!--   mybatisplus 持久层框架 end     -->

        <!-- JSON Web Token(JWT)库 start-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.11.5</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.11.5</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId>
            <version>0.11.5</version>
            <scope>runtime</scope>
        </dependency>
        <!-- JSON Web Token(JWT)库 end-->

        <!-- 第三方get post请求  start     -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version> <!-- 根据需要使用最新版本 -->
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents.client5</groupId>
            <artifactId>httpclient5</artifactId>
            <version>5.2.3</version>
        </dependency>
        <!-- 第三方get post请求  end     -->
        <!-- 文件传输 -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19.4</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.8</version>
        </dependency>

        <!--百度人脸识别-->
        <dependency>
            <groupId>com.baidu.aip</groupId>
            <artifactId>java-sdk</artifactId>
            <version>4.12.0</version>
        </dependency>

    </dependencies>
</project>

整合遇到的问题

1、Invalid bound statement (not found)

(前提是首先你得排查下注解以及扫描以及mapper.xml中的namespace引用是否正确)

这是没有扫描到对应的mapper.xml。原因是mybatis-plus 3.1.2 版本后,里面已经设置默认扫描位置为:classpath*:mapper/**/*.xml,见配置文件:MybatisPlusProperties

所以在springboot的yml中要配置成

mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  type-aliases-package: com.yema
  configuration:
    log-impl: org.apache.ibatis.logging.log4j2.Log4j2Impl #开启sql日志
    #    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关闭sql日志
    default-enum-type-handler: com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler
    call-setters-on-nulls: true #设置值为null时字段也返回给前端
    cache-enabled: true #开启缓存
    lazy-loading-enabled: true #开启懒加载
    aggressive-lazy-loading: false #关闭立即加载
    jdbc-type-for-null: null #因为mybatis对所有的null都映射的是原生Jdbc的OTHER类型,oracle不能正确处理,所以修改jdbcTypeForNull的值为null
    map-underscore-to-camel-case: true #开启驼峰转换,就是数据库的字段是student_id 对应 实体类属性 studentId

2、Maven打包后没有没有BOOT-INF等目录

原因是在springboot对应的module(yema-terminal-boot)的pom.xml中缺少

<build>
        <finalName>ym-terminal-boot</finalName>
        <plugins>
            <plugin>
                <!--该插件主要用途:可执行的 JAR / WAR  -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1710081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python打造自定义汽车模块:从设计到组装的全过程

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、定义汽车模块与核心类 三、模拟汽车组装过程 四、抽象与封装 五、完整汽车…

液氮罐内部会污染吗

液氮罐是一种常见的存储液态氮的设备&#xff0c;广泛应用于科研、生物医药、食品冷冻等领域。但是&#xff0c;人们对于液氮罐内部是否会产生污染一直存在疑问。 我们来看液氮罐内部可能的污染源。液氮罐内部主要存在以下几种潜在的污染来源&#xff1a;气体污染、杂质污染、…

飞睿智能高精度、低功耗测距,无线室内定位UWB芯片如何改变智能家居

在数字化和智能化快速发展的今天&#xff0c;定位技术已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;传统的GPS定位技术在室内环境中往往束手无策&#xff0c;给我们的生活带来了诸多不便。幸运的是&#xff0c;随着科技的不断进步&#xff0c;一种名为UWB&#xf…

Octo:伯克利开源机器人开发框架

【摘要】在各种机器人数据集上预先训练的大型策略有可能改变机器人学习&#xff1a;这种通用机器人策略无需从头开始训练新策略&#xff0c;只需使用少量领域内数据即可进行微调&#xff0c;但具有广泛的泛化能力。然而&#xff0c;为了广泛应用于各种机器人学习场景、环境和任…

FM1800隧道广播插播控制器

隧道广播插播控制器是一款群载波&应急广播插播控制器采用SDR软件无线电技术&#xff0c;产生独立的插播信号与“群载波”信号&#xff0c;本设备可通过软件无线电技术将音频信号调制成调频载波或“群载波”信号&#xff0c;分别送入插播主机&#xff0c;实现隧道广播远端机…

uart_tty_驱动程序框架

UART子系统(四) TTY驱动程序框架_tty驱动框架-CSDN博客

摩尔投票法——代码实现及注释(力扣169题:找出列表中多数元素)

题源&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 目录 一、摩尔投票法 1.1 关键思想 1.2 时空复杂度 1.3 算法详细步骤 1.4 代码 1.5 算法理解 一、摩尔投票法 摩尔投票法&#xff08;Boyer–Moore Majority Vote Algorithm&#xff09;&#xff0c;也被称为…

新版idea配置git步骤及项目导入

目录 git安装 下载 打开git Bash 配置全局用户名及邮箱 查看已经配置的用户名和邮箱 在IDEA中设置Git 问题解决 项目导入 git安装 下载 进入官网 Git - Downloads 点击所属本机系统&#xff0c;window如下图 选择64位安装 按照默认步骤一直下一步即可 打开git Bash …

倒计时 1 天!「飞天技术沙龙-CentOS 迁移替换专场」演讲亮点一览

各位开发者们&#xff1a; 「飞天技术沙龙 - CentOS 迁移替换专场」即将于本周三在北京召开&#xff01;昨天&#xff0c;小龙为参会者公布了详细参会指南&#xff0c;今天带大家了解各演讲内容亮点。 活动时间&#xff1a;5 月 29 日&#xff08;本周三&#xff09; 13:30-17…

webpack构建流程

对webpack的理解&#xff1a; webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具 可以使用webpack管理模块 因为在webpack看来&#xff0c;项目中的所有资源皆为模块&#xff0c;通过分析模块间的依赖关系&#xff0c;在其内部构建出一个依赖图&#xff0c;最终编…

地图数据导入

OpenStreetMap 地图数据官网 Geofabrik Download Server 下载数据 china-latest-free.shp.zip 解压到 D:\works\mapworks\shp\tmp 解压找到相关数据&#xff08;目前我要的是铁路数据&#xff09; 导入 gis_osm_railways_free_1.shp 到 pgAdmin4 数据库 1.启动 C:\Progra…

海外仓系统哪家好?闭坑指南,擦亮眼睛选对系统

可以说现在的海外仓系统市场还是比较杂乱的&#xff0c;各种不同类型&#xff0c;不同收费标准的系统比比皆是&#xff0c;这让很多想引进海外仓系统的企业不知所措&#xff0c;不知道怎么选。 今天就聊一下在选择海外仓系统的时候应该如何考量&#xff0c;才能避免被坑&#…

深度学习设计模式之组合模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 组合模式是将对象组合成树形结构来表现"整体/部分"层次结构&#xff0c;可以更好的实现管理操作。 一、介绍 组合设计模式又叫部分整体模式&#xff0c;将…

变分自编码器与传统编码器:比较、应用与发展历程

变分自编码器与传统编码器&#xff1a;比较、应用与发展历程传统自编码器&#xff08;AE&#xff09;基本原理应用发展起源 变分自编码器&#xff08;VAE&#xff09;基本原理应用发展起源 结论 变分自编码器与传统编码器&#xff1a;比较、应用与发展历程 在深度学习和机器学…

C++:vector的介绍及使用

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 文章目录 前言 一、vector的介绍 二、vector的使用 2.1.构造和赋值重载&#xff08;Member functions&#xff09; 2.2 vector iterator 的使用 2.3 vector 空间增长问题 2.4 vector 增删查改 三 sort 四 v…

Kali : 安装Google Chrome 浏览器和ChromeDriver

目录 一、安装Google Chrome 浏览器 1、下载Google Chrome 2、安装Chrome 3、安装依赖包 二、安装ChromeDriver 1、查看Chrome版本 ​2、下载ChromeDriver 3、解压下载包 4、设置全局访问 5、赋予可执行权限 6、验证chromedriver 7、程序测试 一、安装Google Chrom…

STM32--ADC

一、简介 *ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 *ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 *12位逐次逼近型ADC&#xff0c;1us转换时间 *输入电压范围&#xff1a;0~3.3V&…

# LLM高效微调详解-从Adpter、PrefixTuning到LoRA

一、背景 目前NLP主流范式是在大量通用数据上进行预训练语言模型训练&#xff0c;然后再针对特定下游任务进行微调&#xff0c;达到领域适应&#xff08;迁移学习&#xff09;的目的。 Context Learning v.s. SFT 指令微调是预训练语言模型微调的主流范式&#xff0c;其目的是…

爬虫学习1

爬虫网站&#xff1a;All products | Books to Scrape - Sandbox 豆瓣网&#xff1a;豆瓣电影 Top 250 我们需要安装一个第三方库来解析爬取到的html内容&#xff0c;终端输入pip install bs4,安装成功后引入需要的模块 我们先爬取所有的价格 import requests from bs4 import…

C# VSTO读取Excel单元格Value、Value2

对单个单元格的值&#xff0c;需要用object 对象去接 object value (object)oneCellRange.Value; object value2 (object)oneCellRange.Value2; 对矩形范围的值&#xff0c;需要用object[,]去接 object[,] matrixValues (object[,])matrixRange.Value; object[,] matrixV…