亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

springboot 多模塊將dao(mybatis)項目拆分出去

2024-07-14 08:40:36
字體:
來源:轉載
供稿:網友

前言:

以前我們在建項目的時候, 要么將所有的package建在一個項目里面, 在處理引用的時候, 真的很方便. 不用擔心, 有些東西配置不到或者讀取不到.

或者, 將package獨立出去, 到一個項目中或者子項目中. 這時候, 項目中的引用處理, 還是有些麻煩的. 不過好處更多, 不再表述.

在 idea 里面, 推薦使用 多模塊 建項目, 而不再是 eclipse 里面的那種方式. 那這里, 就試著將一個springboot 的項目拆分到子模塊中去, 看看效果如何.

項目拆分:

1. 目錄變化

springboot,多模塊項目拆分,多模塊,拆分,mybatis

2. 父項目

父pom.xml理論上來說, 應該是對子項目中的引用進行一個約束, 主要是版本約束.

所以父 pom.xm 中, 應該使用dependencyManagement 來約束 子項目中 jar 包版本.

然后對于一些子項目都用得著的引用, 可以提到 父項目中去.

<?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>cn.elvinle</groupId>  <artifactId>parent</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>pom</packaging>  <name>parent</name>  <description>Demo project for Spring Boot</description>  <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.5.9.RELEASE</version>    <relativePath/> <!-- lookup parent from repository -->  </parent>  <modules>    <module>pojo</module>    <module>web</module>    <module>dao</module>    <module>service</module>    <module>simpl</module>  </modules>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>    <druid.version>1.1.3</druid.version>    <mybatis.boot.starter.version>1.3.1</mybatis.boot.starter.version>    <mysql.connector.java.version>5.1.44</mysql.connector.java.version>  </properties>  <dependencyManagement>    <dependencies>      <dependency>        <groupId>com.alibaba</groupId>        <artifactId>druid</artifactId>        <version>${druid.version}</version>      </dependency>      <dependency>        <groupId>org.mybatis.spring.boot</groupId>        <artifactId>mybatis-spring-boot-starter</artifactId>        <version>${mybatis.boot.starter.version}</version>      </dependency>      <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>${mysql.connector.java.version}</version>      </dependency>    </dependencies>  </dependencyManagement>  <!--申明依賴關系-->  <dependencies>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-test</artifactId>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>    </plugins>  </build></project>

3. 子項目 - pojo

springboot,多模塊項目拆分,多模塊,拆分,mybatis

3.1 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>  <parent>    <groupId>cn.elvinle</groupId>    <artifactId>parent</artifactId>    <version>0.0.1-SNAPSHOT</version>  </parent>  <groupId>cn.elvinle</groupId>  <artifactId>pojo</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>pojo</name>  <description>Demo project for Spring Boot</description>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>  </properties>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>    </plugins>  </build></project>

3.2 db實體

package cn.elvinle.pojo;/** * @author: elvin */public class User {  private int id;  private String name;  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }}

對于pojo和dao中的內容, 可以使用mybatis逆向工程生成, 可以省去很多麻煩.

4. 子項目 - dao

springboot,多模塊項目拆分,多模塊,拆分,mybatis

4.1 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>  <parent>    <groupId>cn.elvinle</groupId>    <artifactId>parent</artifactId>    <version>0.0.1-SNAPSHOT</version>  </parent>  <groupId>cn.elvinle</groupId>  <artifactId>dao</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>dao</name>  <description>Demo project for Spring Boot</description>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>  </properties>  <dependencies>    <!-- 內部引用 -->    <dependency>      <groupId>cn.elvinle</groupId>      <artifactId>pojo</artifactId>      <version>0.0.1-SNAPSHOT</version>    </dependency>    <!-- 外部引用 -->    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->    <dependency>      <groupId>com.alibaba</groupId>      <artifactId>druid</artifactId>    </dependency>    <dependency>      <groupId>mysql</groupId>      <artifactId>mysql-connector-java</artifactId>    </dependency>    <dependency>      <groupId>org.mybatis.spring.boot</groupId>      <artifactId>mybatis-spring-boot-starter</artifactId>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>    </plugins>  </build></project>

4.2 mapper

UserMapper.java:

public interface UserMapper {  public List<User> getAll();}

UserMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="cn.elvinle.dao.mapper.UserMapper" >  <select id="getAll" resultType="cn.elvinle.pojo.User">    select * from user  </select></mapper>

5. 子項目 - service

springboot,多模塊項目拆分,多模塊,拆分,mybatis

5.1 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>  <parent>    <groupId>cn.elvinle</groupId>    <artifactId>parent</artifactId>    <version>0.0.1-SNAPSHOT</version>  </parent>  <groupId>cn.elvinle</groupId>  <artifactId>service</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>service</name>  <description>Demo project for Spring Boot</description>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>  </properties>  <dependencies>    <dependency>      <groupId>cn.elvinle</groupId>      <artifactId>pojo</artifactId>      <version>0.0.1-SNAPSHOT</version>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>    </plugins>  </build></project>

5.2 UserService.java

public interface UserService {  public List<User> getAll();}

6. 子項目 - simpl

springboot,多模塊項目拆分,多模塊,拆分,mybatis

6.1 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>  <parent>    <groupId>cn.elvinle</groupId>    <artifactId>parent</artifactId>    <version>0.0.1-SNAPSHOT</version>  </parent>  <groupId>cn.elvinle</groupId>  <artifactId>simpl</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>simpl</name>  <description>Demo project for Spring Boot</description>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>  </properties>  <dependencies>    <dependency>      <groupId>cn.elvinle</groupId>      <artifactId>pojo</artifactId>      <version>0.0.1-SNAPSHOT</version>    </dependency>    <dependency>      <groupId>cn.elvinle</groupId>      <artifactId>service</artifactId>      <version>0.0.1-SNAPSHOT</version>    </dependency>    <dependency>      <groupId>cn.elvinle</groupId>      <artifactId>dao</artifactId>      <version>0.0.1-SNAPSHOT</version>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>    </plugins>  </build></project>

6.2 UserSImpl

@Servicepublic class UserSImpl implements UserService {  @Autowired  private UserMapper userMapper;  @Override  public List<User> getAll() {    System.out.println("UserSImpl getAll");    return userMapper.getAll();  }}

7. 子項目 - web

關鍵的地方來了.

springboot,多模塊項目拆分,多模塊,拆分,mybatis

7.1 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>  <parent>    <groupId>cn.elvinle</groupId>    <artifactId>parent</artifactId>    <version>0.0.1-SNAPSHOT</version>  </parent>  <groupId>cn.elvinle</groupId>  <artifactId>web</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>web</name>  <description>Demo project for Spring Boot</description>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>  </properties>  <dependencies>    <dependency>      <groupId>cn.elvinle</groupId>      <artifactId>simpl</artifactId>      <version>0.0.1-SNAPSHOT</version>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>    </plugins>  </build></project>

7.2 application.yml

server: context-path: /parent port: 8080mybatis: config-location: /mapper/*.xmlspring: datasource:  username: root  password: root  url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8  driver-class-name: com.mysql.jdbc.Driver

7.3 控制器

@RestController@RequestMapping("api")public class ApiController {  @Autowired  private UserService userService;  @RequestMapping("index")  public List<User> index(){    List<User> all = userService.getAll();    return all;  }}

到目前為止, 沒什么特別的, 都是正常修改, 接下來, 會出現與不分模塊不同的地方.

7.4 入口處修改

@ComponentScan({"cn.elvinle"})@SpringBootApplicationpublic class WebApplication {  public static void main(String[] args) {    SpringApplication.run(WebApplication.class, args);  }}

這時候, 如果直接運行起程序, 是不會成功訪問的. 原因在于, mybatis的自動化配置和自動化創建, 沒有支持到多模塊中.

這時候, 需要我們手動進行配置和創建.

7.5 Mybatis java 配置

<!-- mybatis 的工廠 -->  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    <property name="dataSource" ref="dataSource" />    <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"/>    <!-- 自動掃描mapping.xml文件 -->    <!--<property name="mapperLocations" value="classpath:mapper/*.xml" />-->  </bean>  <!-- DAO接口所在包名,Spring會自動查找其下的類 -->  <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">    <property name="basePackage" value="cn.elvinle.bookshop.mapper" />    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>  </bean>

可以對照著上面的配置文件, 進行java配置

MybatisConfig:

@Configurationpublic class MybatisConfig {  @Value("${mybatis.config-location}")  private String mapperLocationPattern;  @Bean  @ConfigurationProperties(prefix = "spring.datasource")  public DataSource dataSource(){return new com.alibaba.druid.pool.DruidDataSource();  }  @Bean(name="sqlSessionFactory")  public SqlSessionFactory sqlSessionFactory() throws Exception{    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();    sqlSessionFactoryBean.setDataSource(dataSource());    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();    sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocationPattern));    return sqlSessionFactoryBean.getObject();  }}

MybatisMapperScannerConfig:

@Configuration@AutoConfigureAfter(MybatisConfig.class)@MapperScan("cn.elvinle.dao.mapper")public class MybatisMapperScannerConfig {  public MapperScannerConfigurer mapperScannerConfigurer(){    MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();    mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");    mapperScannerConfigurer.setBasePackage("cn.elvinle.dao.mapper");    return mapperScannerConfigurer;  }}

OK, 到這里, 就可以把程序跑起來了, 看一下結果:

springboot,多模塊項目拆分,多模塊,拆分,mybatis

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区亚洲二区亚洲三区| 精品视频在线播放| 亚洲一级免费视频| 亚洲香蕉av在线一区二区三区| 日韩a**站在线观看| 高潮白浆女日韩av免费看| 欧洲永久精品大片ww免费漫画| 国内揄拍国内精品少妇国语| 色婷婷**av毛片一区| 久久久成人的性感天堂| 自拍偷拍亚洲精品| 国产精品 欧美在线| 国外成人性视频| 色综合久久悠悠| 国产精品爱久久久久久久| 国产精品成人一区二区| 欧美情侣性视频| 国产精品久久久久久久久久久久| 亚洲第一二三四五区| 亚洲国产成人精品电影| 国产精品一区电影| 亚洲国产美女精品久久久久∴| 国产精品偷伦免费视频观看的| 成人精品久久av网站| 亚洲高清av在线| 久久久久久久久综合| 日韩视频在线观看免费| 中文字幕精品一区久久久久| 日韩av在线看| 欧美电影在线观看网站| 亚洲的天堂在线中文字幕| 国产亚洲欧美一区| 久久久久久久久久久av| 91精品国产乱码久久久久久久久| 中文字幕日韩电影| 色狠狠av一区二区三区香蕉蜜桃| 日韩网站免费观看高清| 欧洲中文字幕国产精品| 爽爽爽爽爽爽爽成人免费观看| 国产一区深夜福利| 欧美视频免费在线观看| 成人在线观看视频网站| 91精品91久久久久久| 性欧美办公室18xxxxhd| 国产一区二区三区在线免费观看| 国产欧美精品一区二区三区-老狼| 国产精品第一页在线| 国内精品伊人久久| 4438全国亚洲精品在线观看视频| 久久97久久97精品免视看| 亚洲精品www久久久| 欧美视频一二三| 日本欧美在线视频| 国产精品∨欧美精品v日韩精品| 欧美日韩亚洲精品内裤| 萌白酱国产一区二区| 亚洲欧美制服综合另类| 国产精品永久免费视频| 综合av色偷偷网| 91成人免费观看网站| 欧美日韩成人黄色| 91网站在线免费观看| 亚洲男人的天堂网站| 中文字幕av一区二区三区谷原希美| 国产精品免费视频xxxx| 性日韩欧美在线视频| 欧美亚洲激情视频| 精品无人区太爽高潮在线播放| 尤物九九久久国产精品的特点| 欧美精品激情在线观看| 久久久久成人精品| 欧美成人免费网| 久久男人av资源网站| 国产精品99久久99久久久二8| 亚洲国产成人91精品| 欧美日韩免费区域视频在线观看| 亚洲另类欧美自拍| 九九精品在线视频| 欧美激情视频网| 欧美一级片免费在线| 亚洲深夜福利在线| 91九色国产视频| 国产日韩亚洲欧美| 亚洲电影免费在线观看| 奇米成人av国产一区二区三区| 国产美女扒开尿口久久久| 欧美黑人视频一区| 亚洲欧美国产一区二区三区| 久久久久久久久中文字幕| 九色91av视频| 亚洲第一福利网站| 亚洲国产欧美自拍| 全色精品综合影院| 国语自产偷拍精品视频偷| 中文字幕免费精品一区高清| 国产精品久久久久久久9999| 欧美在线视频一区| 在线观看精品自拍私拍| 欧美大片欧美激情性色a∨久久| 欧美日本黄视频| 78m国产成人精品视频| 成人综合网网址| 亚洲欧美在线x视频| 久久精品影视伊人网| 91av成人在线| 国产精品第一第二| 亚洲va码欧洲m码| 国产精品高潮呻吟久久av无限| 国产精品av在线| 亚洲性线免费观看视频成熟| 日韩免费在线播放| 日本成人激情视频| 最近的2019中文字幕免费一页| 黑人巨大精品欧美一区二区免费| 在线成人激情黄色| 国产精品wwwwww| 国产日韩欧美一二三区| 亚洲电影免费观看高清| 国产91久久婷婷一区二区| 国产精品福利在线观看网址| 亚洲欧洲黄色网| 91高清免费视频| 亚洲日本中文字幕| 亚洲免费人成在线视频观看| 在线视频免费一区二区| 久久久久久这里只有精品| 久久人人爽人人爽人人片av高清| 日韩麻豆第一页| 日本久久精品视频| 亚洲精品视频中文字幕| 国产69精品久久久| 国产91九色视频| 欧美制服第一页| 在线精品播放av| 久色乳综合思思在线视频| 欧美视频一二三| 91亚洲va在线va天堂va国| 国产精品自拍网| 欧美高跟鞋交xxxxhd| 日本欧美精品在线| 久青草国产97香蕉在线视频| 色yeye香蕉凹凸一区二区av| 中文字幕欧美日韩va免费视频| 欧美成人免费全部观看天天性色| 色先锋资源久久综合5566| 91精品久久久久久久| 日韩av免费在线播放| 国产精品第100页| 1769国内精品视频在线播放| 在线视频日韩精品| 亚洲国产高清高潮精品美女| 欧美怡春院一区二区三区| 久久久久国产精品www| 欧美午夜精品久久久久久久| 久久精品国产成人| 亚洲综合在线中文字幕| 欧美情侣性视频| 91久久久久久久| 精品综合久久久久久97| 亚洲最新av网址| 国产精品久久综合av爱欲tv| 久久韩国免费视频| 国产精品99久久久久久人| www.欧美精品一二三区|