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~~~~~~