springboot项目多模块整合

记一次将项目拆分成多模块的过程

之前做的项目一直都是单模块的,直到有一次去外地出差,看到公司的一个springmvc项目把service和mapper拆分成单独的一个项目。我很是惊讶,向大哥讨教才知道是把单个项目拆分成多个模块,觉得很是高级。
前不久向松哥买了一个微人事教学资料,很巧,他的项目到后期也整合成多模块项目,于是想记录一下。

前置准备工作配置maven

如果你的项目是idea来开发并且使用的是他自带的maven,那你就去你的idea安装目录下的plugins目录下的maven目录,如果你用的maven2或者maven3,找到对应目录下的conf目录下的settings.xml,如果你使用的是自己的,也是一样,找到settings.xml
1.使用notepad++打开,定位到标签
按如下配置:

<profiles>
    <!-- profile
     | Specifies a set of introductions to the build process, to be activated using one or more of the
     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
     | or the command line, profiles have to have an ID that is unique.
     |
     | An encouraged best practice for profile identification is to use a consistent naming convention
     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
     | This will make it more intuitive to understand what the set of introduced profiles is attempting
     | to accomplish, particularly when you only have a list of profile id's for debug.
     |
     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo. -->
    <profile>
      <id>jdk-1.8</id>

      <activation>
        <jdk>1.8</jdk>
      </activation>
	  <properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	  </properties>
      <!--<repositories>
        <repository>
          <id>jdk14</id>
          <name>Repository for JDK 1.4 builds</name>
          <url>http://www.myhost.com/maven/jdk14</url>
          <layout>default</layout>
          <snapshotPolicy>always</snapshotPolicy>
        </repository>
      </repositories>-->
    </profile>

准备好之后开始改造自己项目

首先关闭idea或退出当前工程;
进入自己工程所在位置,把文件夹下的文件删的只留下src和pom.xml
我这里是已经删过了的,正常的话会有一些idea自己配置或者是maven的;
在这里插入图片描述

创建新的maven工程

不用骨架构建,直接next
在这里插入图片描述

创建好的一个新的maven项目叫vhr,然后接着创建一个子maven项目,作为服务端就叫vhrserver

在这里插入图片描述
在这里插入图片描述

在子项目vhrserver里开始创建不同的模块,我这里创建mapper、model、service还有一个web(其实就是之前的准备改造的工程),这里还有必要做一个说明,在模块改造的时候,不知道是不是因为idea太智能了还是咋地,我移进来的原工程(在这里是vhr-web)项目结构出现严重错乱,所以请各位老铁在拷贝进新工程里的时候一定要有所备份以防不测。

在这里插入图片描述

创建好之后才是麻烦的开始,你要捋清楚你原来的文件要放到新工程的哪里?当然我这个一目了然哈,model mapper service,我觉得不会有谁不知道吧?心里怎么放都有点b数的。但是最烦的就是捋清依赖关系。下面开始描述具体步骤,有些我自己遇到的坑,请留意。

首先要转移父工程位置到最外层

在这里插入图片描述

vhrserver的pom.xml里面为什么会没有vhr-web这个模块呢?

大哥解释是跟vhrserver没关系,暂时可以不加
在这里插入图片描述

开始放model

首先要创建好一个包,然后:在这里插入图片描述
去原工程把所有的model类全部拷贝进来(当然,你喜欢怎么拷贝 就怎么拷贝)
在这里插入图片描述
还有我要把spring-boot-starter-web依赖导进来,为什么呢?因为我的有些类用了他里面的注解,比如@JsonFormat不添加会爆红。还有security的依赖也要放进去,

然后开始搞mapper

也是老样子把所有的类拷贝进来,方法如上;
第二要添加依赖,因为大家知道,mapper是需要实体类的,所有这里要把实体类的依赖添加进来。

这里呢我要重点强调一件事情:
这个版本号需要锁定,如果不锁定,你将会看到满世界的红线。
锁定方法是:
选中对应的model依赖按住快捷键Ctrl+alt+空格键,会自动提示,选择就行。
在这里插入图片描述
mapper里面还要druid和mybatis的依赖,也从之前的vhr-web工程里剪切进去。

oduile,我忘记了说一件事得补充一下

因为我这里是把mapper的xml文件和类放在了一起没有放在静态目录下,所以这里我还需要在pom文件里写一个配置,让springboot识别他。

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resource</directory>
            </resource>
        </resources>
    </build>

接着开始搞service

所有类拷贝
添加依赖,众所周知,service依赖于mapper。什么,你不知道?你没在service的类里面写过return mapper.*****吗?
所以放依赖:
在这里插入图片描述
我这里还把原本的utils包放到了service下面,所以还需要他们对应的依赖

web层(因为这里有控制层controller)所以要把service的依赖导进去

在这里插入图片描述
其余的web端不动,可能会有人问,为什么mysql的包不导入到mapper里面,他是连接数据库的关键啊,为什么要放在web里面呢?
因为mysql驱动仅仅只是在运行时生效,你放到mapper里面,其实不起任何作用。更何况我的项目里,web模块里还有一个类需要jdbc包,所有要在web模块保留mysql。

玩到这个时候,你启动自己的项目,你会发现他会报错:

在这里插入图片描述

在看maven

在这里插入图片描述
为什么会有这样的错误呢,是因为我们在操作的时候,忘记了把后导入进来的vhr-web工程添加父依赖,他无法锁定版本号。只需要添加自己父依赖就OK。

好了开始启动

在这里插入图片描述
我这里启动没有任何问题,可能到了你那,可能会提示你配置SDK啊什么的,正常配置就可以了。

第一次做项目的多模块划分,跟着教程,绕了几个弯子,在这里稍作记录,作为总结,也分享给大家。谢谢。

Author by 朝花不迟暮

在这里插入图片描述

Spring Boot是一个用于快速开发Java应用程序的框架,它提供了一种简化的方式来构建独立的、生产级别的Spring应用程序。MyBatis是一个持久层框架,它简化了数据库访问的过程。而MySQL是一种关系型数据库管理系统,被广泛用于存储和管理数据。 在Spring Boot中整合MyBatis和MySQL可以通过以下步骤完成: 1. 在Spring Boot项目的pom.xml文件中添加MyBatis和MySQL的依赖项。 ```xml <dependencies> <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <!-- MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies> ``` 2. 在application.properties或application.yml文件中配置MySQL数据库连接信息。 ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=username spring.datasource.password=password ``` 3. 创建一个用于操作数据库的Mapper接口,并使用@Mapper注解标记该接口。 ```java @Mapper public interface UserMapper { // 定义数据库操作方法 List<User> getAllUsers(); void insertUser(User user); void updateUser(User user); void deleteUser(int userId); } ``` 4. 创建一个用于实现Mapper接口的Mapper XML文件,并定义SQL语句。 ```xml <!-- user_mapper.xml --> <mapper namespace="com.example.mapper.UserMapper"> <select id="getAllUsers" resultType="com.example.entity.User"> SELECT * FROM user </select> <insert id="insertUser"> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <update id="updateUser"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUser"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` 5. 在Spring Boot的主类上使用@MapperScan注解,指定Mapper接口所在的包。 ```java @SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 至此,你已经成功将Spring Boot、MyBatis和MySQL整合一起了。你可以在业务逻辑中使用自动注入的Mapper接口来操作数据库。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值