maven作用原理及父子級繼承使用


maven主要作用:在需要高並發訪問條件下構建分區集群項目時,提供一個穩定版本依賴和排除重復jar包引入,減少結構冗余,從側面增加代碼運行速度

首先,我們要測試父子級繼承依賴,就需要准備項目,目錄如下:

首先在父工程(test)的pom.xml文件中引入經過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>com.aaa.fx.maven</groupId>
    <artifactId>test</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <!--//此處為已經被引用的module文件:-->
    <modules>
        <module>mapper</module>
        <module>model</module>
        <module>service</module>
        <module>web</module>
    </modules>

    <!--dependencyManagement此標簽為設定jar包不會對子對象繼承,子對象若需要繼承則需要在自己的pom.xml文件中進行特殊聲明重寫,需要注意的是。重寫的時候不需要加版本號-->
    <dependencyManagement>
        <dependencies>
            <!--
                此為mysql的驅動包
            -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.nekohtml</groupId>
                <artifactId>nekohtml</artifactId>
                <version>1.9.21</version>
            </dependency>
            <!--
                spring
            -->
            <!--
                mybatis
            -->
            <!--
                shiro
            -->
        </dependencies>
    </dependencyManagement>
</project>

接着在model中書寫實體類:

package com.aaa.fx.maven.model;

import java.io.Serializable;
import java.util.Objects;

/**
 * 首先,實體類需要實現序列化接口
 * 定義對象屬性全部使用引用類型,防止空指針異常(引用類型為空則為null)
 * 實現getset方法
* 重寫equals和hashCode方法
*/ public class User implements Serializable { private Long id; private String username; private String password; private Integer age; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return Objects.equals(id, user.id) && Objects.equals(username, user.username) && Objects.equals(password, user.password) && Objects.equals(age, user.age); } @Override public int hashCode() { return Objects.hash(id, username, password, age); } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", age=" + age + '}'; } }

由於實體類無需特殊引用  所以接下來直接進到mapper目錄下書寫mapper的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>test</artifactId>
        <groupId>com.aaa.fx.maven</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mapper</artifactId>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <!--無需書寫版本號,因為此為繼承/重寫敷方法中的dependencyManagement中的jar包-->
            <!--若強行書寫,則會到倉庫中下載,造成jar包導入重復和冗余-->
        </dependency>
        <!--需要用到實體類,則在此處引入model實體類,便可以在mapper的Module下使用model中的實體類,此為跨域引用-->
        <dependency>
            <groupId>com.aaa.fx.maven</groupId>
            <artifactId>model</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

接下來我肯可以看到  已經可以成功使用我們在model中定義好的User對象了

package com.aaa.fx.maven.mapper;

import com.aaa.fx.maven.model.User;

import java.util.List;

public interface UserMapper {

    List<User> selectAll();
}

進入service中配置servie的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>test</artifactId>
        <groupId>com.aaa.fx.maven</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>service</artifactId>

    <!--service需要用到mapper,故在此處引入mapper,進行跨域-->
    <dependencies>
        <dependency>
            <groupId>com.aaa.fx.maven</groupId>
            <artifactId>mapper</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


</project>

書寫我們的service:

package com.aaa.fx.maven.service;

import com.aaa.fx.maven.mapper.UserMapper;
import com.aaa.fx.maven.model.User;

import java.util.ArrayList;
import java.util.List;

public class UserService {
    UserMapper userMapper = new UserMapper() {
        public List<User> selectAll() {
//            搞一個User對象放入List<User>的集合當中映射數據庫返回值對象
            User user = new User();
            //1L的L有必要大寫,和小寫的I和1用以區分
            user.setId(1L);
            user.setAge(15);
            user.setUsername("admin");
            user.setPassword("Moon-history");
//            這不,搞出來一個List<User>類型的arraylist對象,然后將設置好值的user放進去
            List<User> userList = new ArrayList<User>();
            userList.add(user);
            return userList;
        }
    };
}

可以看到我們成功引用了mapper

最后的web中的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>test</artifactId>
        <groupId>com.aaa.fx.maven</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>web</artifactId>

    <!--當然,最后需要在頁面顯示測試了,那么引入service文件-->
    <dependencies>
        <dependency>
            <groupId>com.aaa.fx.maven</groupId>
            <artifactId>service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

接着是最后的web中的controller:

package com.aaa.fx.maven.web;

import com.aaa.fx.maven.service.UserService;

public class UserController {
    UserService userService = new UserService();
    //成功搞到,那么結束!
}

The end~~~~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM