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

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

项目结构

两个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/*.xmltype-aliases-package: com.yemaconfiguration: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.MybatisEnumTypeHandlercall-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的值为nullmap-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.mzph.cn/web/17706.shtml

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

相关文章

kafka-消费者组偏移量重置

文章目录 1、消费者组偏移量重置1.1、列出所有的消费者组1.2、查看 my_group1 组的详细信息1.3、获取 kafka-consumer-groups.sh 的帮助信息1.4、 偏移量重置1.5、再次查看 my_group1 组的详细信息 1、消费者组偏移量重置 1.1、列出所有的消费者组 [rootlocalhost ~]# kafka-…

监管端..

文章目录 1. 登录流程2. 日志AOP 1. 登录流程 使用账号&#xff08;手机号&#xff09;、密码、验证码。登录就是获取token的&#xff0c;输入的账号密码用RSA加密&#xff08;非对称&#xff09; 首先输入账号密码&#xff0c;在发送手机验证码时候先校验账号密码有没有输入…

私域如何高效管理多微信并实现聚合聊天?

在私域经营中&#xff0c;管理多个微信号是一项具有挑战性的任务。为了提高工作效率&#xff0c;辅助工具成为必不可少的一部分。而个微管理系统将为大家带来高效的多微信号管理体验&#xff0c;让大家能够更好地聚合聊天。 首先&#xff0c;个微管理系统提供了一个统一的界面…

【UML】-01-UML基本元素的介绍

1、UML的词汇表 &#xff08;1&#xff09;事物&#xff1b; &#xff08;2&#xff09;关系&#xff1b; &#xff08;3&#xff09;图。 事物是对模型中首要成分的抽象&#xff1b;关系把事物结合在一起&#xff1b;图聚集了相关的事物。 注&#xff1a;事物也称为元素 2…

vivo X100 Ultra自称销售额破5亿,真实销量成谜?

文/张诗雨 5月28日9点&#xff0c;vivo 正式启动了其旗舰新机vivo X100 Ultra的全渠道销售工作。这款新机&#xff0c;早在5月13日就已正式亮相&#xff0c;并推出了三种存储容量的版本&#xff0c;分别是12GB256GB、16GB512GB以及16GB1TB&#xff0c;而相应的售价也不低&…

常见排序算法之选择排序

目录 一、选择排序 1.1 什么是选择排序&#xff1f; 1.2 思路 1.2.1 思路一 1.2.2 优化思路 1.3 C语言源码 1.3.1 思路一 1.3.2 优化思路 二、堆排序 2.1 调整算法 2.1.2 向上调整算法 2.1.3 向下调整算法 2.2 建堆排序 一、选择排序 1.1 什么是选择排序&#xf…

人工智能与区块链技术:开启未来科技的双引擎

在当今科技飞速发展的时代&#xff0c;人工智能和区块链技术如同两颗璀璨的明星&#xff0c;照亮了人类通往未来的道路。 人工智能&#xff0c;以其强大的学习和分析能力&#xff0c;正悄然改变着我们的生活。它能够处理海量的数据&#xff0c;为我们提供精准的预测和个性化的…

设计模式:外观模式 导诊台。空指针异常

文章目录 UML类图目录结构思路Register.javaOutpatientService.javaPrice.javaPharmacy.javaFacade.java空指针异常 Test.java UML类图 目录结构 思路 照着写&#xff0c;然后getRegister&#xff08;&#xff09;方法的具体实现就是&#xff1a;打印一句话&#xff0c;然后到…

从 0 手撸一个 pytorch

背景介绍 最近抽空看了下 Andrej Karpathy 的视频教程 building micrograd&#xff0c;教程的质量很高。教程不需要任何前置机器学习基础&#xff0c;只需要有高中水平的数学基础即可。整个教程从 0 到 1 手撸了一个类 pytorch 的机器学习库 micrograd&#xff0c;核心代码不到…

Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f44b; 引言&#x1f4cc; Vuex 基础知识核心构成要素示例代码 &#x1f4cc; Pinia 基础知识核心构成要素示例代码 &#x1f4cc; Vuex与Pinia的区别&#x1f4cc; 使用示例与对比&#x1f4cc; 总结 &#x1f44b;…

探索Solana链上DApp开发:高性能区块链生态的新机遇

Solana 是一个新兴的区块链平台&#xff0c;致力于为 DApp&#xff08;去中心化应用程序&#xff09;开发者提供高性能、低成本的解决方案。Solana 的独特之处在于其创新性的共识机制和高吞吐量的网络&#xff0c;使得开发者可以构建高度可扩展的 DApp&#xff0c;并为用户提供…

云服务器如何使用局域网服务器的磁盘空间

说明 云服务器中的磁盘空间不足时&#xff0c;想要开通更多的磁盘空间&#xff0c;但奈何价格太贵&#xff0c;开不起 刚好局域网中有闲置的服务器空间可以拿来用&#xff0c;这里我们直接使用Samba服务来共享文件夹&#xff0c;使用frp来进行内网穿透&#xff1b; 1、磁盘挂…

OSPF优化——OSPF减少LSA更新量2

二、特殊区域——优化非骨干区域的LSA数量 不是骨干区域、不能存在虚链路 1、不能存在 ASBR 1&#xff09;末梢区域 该区域将拒绝 4、5LSA的进人&#xff0c;同时由该区域连接骨干0区域的ABR 向该区域&#xff0c;发布一条3类的缺省路由; 该区域内每台路由器均需配置&#xf…

Unity 实现心电图波形播放(需波形图图片)

实现 在Hierarchy 面板从2D Object 中新建一个Sprite&#xff0c;将波形图图片的赋给Sprite。 修改Sprite 的Sprite Renderer 组件中Draw Mode 为Tiled, 修改Sprite Renderer 的Size 即可实现波形图播放。 在Hierarchy 面板从2D Object 中新建一个Sprite Mask 并赋以遮罩图片…

【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)

&#x1f50d;目的 允许派生组件从与派生类型兼容的基本组件继承某些功能。 &#x1f50d;解释 真实世界例子 对于正在策划赛事的综合格斗推广活动来说&#xff0c;确保在相同重量级的运动员之间组织比赛至关重要。这样可以防止体型明显不同的拳手之间的不匹配&#xff0c;例如…

生成模型 | 从 VAE 到 Diffusion Model (下)

生成模型 | 从 VAE 到 Diffusion Model &#xff08;上&#xff09;的链接请点击下方蓝色字体: 上部分主要介绍了&#xff0c;GAN, AE, VAE, VQ-VAE, DALL-E 生成模型 | 从 VAE 到 Diffusion Model &#xff08;上&#xff09; 文章目录 我们先来看一下生成模型现在的能力一&…

IT人的拖延——一放松就停不下来,耽误事?

拖延的表现 在我们的日常工作中&#xff0c;经常会面对这样一种情况&#xff1a;因为要做的Sprint ticket比较复杂或者长时间的集中注意力后&#xff0c;本来打算休息放松一下&#xff0c;刷刷剧&#xff0c;玩玩下游戏&#xff0c;但却一个不小心&#xff0c;没控制住时间&am…

IP 分片过程及偏移量计算

IP 报头中与分片相关的三个字段 1、 标识符&#xff08; ldentifier )&#xff1a;16 bit 该字段与 Flags 和 Fragment Offest 字段联合使用&#xff0c; 对较大的上层数据包进行分段&#xff08; fragment &#xff09; 操作。 路由器将一个包拆分后&#xff0c;所有拆分开的…

图解Java数组的内存分布

我们知道&#xff0c;访问数组元素要通过数组索引&#xff0c;如&#xff1a; arr[0]如果直接访问数组&#xff0c;比如&#xff1a; int[] arr1 {1}; System.out.println(arr1);会发生什么呢&#xff1f; 打印的是一串奇怪的字符串&#xff1a;[I16b98e56。 这个字符串是J…

强化训练:day11(游游的水果大礼包、 买卖股票的最好时机(二)、倒置字符串)

文章目录 前言1. 游游的水果大礼包1.1 题目描述1.2 解题思路1.3 代码实现 2. 买卖股票的最好时机(二)2.1 题目描述2.2 解题思路2.3 代码实现 3. 倒置字符串3.1 题目描述3.2 解题思路3.3 代码实现 总结 前言 1. 游游的水果大礼包   2. 买卖股票的最好时机(二)   3. 倒置字符…