国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣化县| 永修县| 大化| 香港| 张家港市| 静宁县| 喀什市| 彭水| 自贡市| 平顶山市| 科尔| 广饶县| 西吉县| 军事| 理塘县| 临夏市| 长寿区| 刚察县| 牟定县| 山丹县| 拉孜县| 岳普湖县| 仁怀市| 夏邑县| 杭锦后旗| 洛隆县| 澜沧| 车致| 兖州市| 建平县| 湖北省| 淮滨县| 利川市| 宜宾县| 垫江县| 洪泽县| 竹北市| 雷州市| 宣汉县| 甘谷县| 乐都县|