Vorwort:
In der Vergangenheit, als wir ein Projekt bauten, haben wir entweder alle Pakete in einem Projekt gebaut, was bei der Bearbeitung von Referenzen wirklich bequem war. Machen Sie sich keine Sorgen, einige Dinge können nicht konfiguriert oder gelesen werden.
Oder trennen Sie das Paket in ein Projekt oder Unterprojekt. Zu diesem Zeitpunkt ist die Referenzverarbeitung im Projekt immer noch etwas problematisch. Die Vorteile sind jedoch mehr, daher werde ich sie nicht mehr ausdrücken.
In der Idee wird empfohlen, Multi-Modul-Bauprojekte anstelle des Weges in Eclipse zu verwenden. Versuchen Sie dann, ein Springboot -Projekt in ein Submodul aufzuteilen, um zu sehen, wie es funktioniert.
Projektaufteilung:
1. Verzeichnisänderungen
2. Elternprojekt
Theoretisch sollte Eltern pom.xml eine Einschränkung für Referenzen in Kinderprojekten, hauptsächlich Versionsbeschränkungen, sein.
Daher sollte in der übergeordneten POM.xm das Abhängigkeitsmanagement verwendet werden, um die JAR -Paketversion im Unterprojekt einzuschränken.
Für Referenzen, die für einige Unterprojekte nützlich sind, können Sie sie im übergeordneten Projekt erwähnen.
<? 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> <Packages> pom </packaging> <name> übergeordnet </name> <beschreibung> Demo-Projekt für Spring Boot </Beschreibung> <Eltern> <gruppe> org.SpringFramework.Boot </GroupId> <artifactId> Spring-Boot-Starter </artifactId> </reibungs> </artifactId> </arteFactId> </artifactid> </1.9.. Lookup übergeordnet von Repository-> </übergeordnet> <module> <Modul> pojo </modul> <modul> web </modul> <modul> DAO </modul> <modul> service </modul> <modul> simimal </modul> </modules> <properties> <projekt.sourcoding> utf-8 </project.build.sourcoding> utf-8 </project.build.sourcoding> utf-8 </project.build.sourcoding> utf-8 </projekts <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> <dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <dependency> <gruppeId> org.mybatis.spring.boot </Groupid> <artifactId> mybatis-pring-boot-starter </artifactid> <version> $ {mybatis.boot.starter.version} </Version> </abhängig> <entroups> <gruppe <artifactId> mysql-connector-java </artifactId> <version> $ {mysql.connector.java.version} </Version> </abhängig> </abhängig> </abhängigManagement> <!-Declare Abhängigkeiten-> <Depentcies> <Epapture </gruppe </gruppe-id> <! <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependency> </dependency> </build> <plugins> <gruppe> org.springframework.boot </Groupid> <artifactId> Spring-Boot-Maven-Plugin </artifactid> </plugin> </plugins> </build> </project>3. Subproject - Pojo
3.1 pom.xml
<? 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> <elemente> <rubact> </garupd> cnupid> cn.elvinle </artifact> </artifactIf. <version> 0.0.1-Snapshot </Version> </parent> <gruppe> cn.elvinle </gruppeId> <artifactId> pojo </artifactId> <version> 0.0.1-Snapshot </Version> <packages> jar </packaging> <name> pojo </name> </capture> Demo-Projeo-Projeo-Projeo-Projekt für Spring-Demo-Projekt für Spring-Demo-Projekt. <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> <gruppe> org.springframework.boot </Groupid> <artifactId> Spring-Boot-Maven-Plugin </artifactid> </plugin> </plugins> </build> </project>
3.2 dB Entität
Paket cn.elvinle.pojo;/** * @Author: Elvin */Public Class User {private int id; privater Zeichenfolge 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; }}Für Inhalte in Pojo und Dao können Sie MyBatis Reverse Engineering verwenden, um es zu generieren, was viel Ärger sparen kann.
4. Subproject-Dao
4.1 pom.xml
<? 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> <elemente> <rubact> </garupd> cnupid> cn.elvinle </artifact> </artifactIf. <version> 0.0.1-Snapshot </Version> </parent> <gruppe> cn.elvinle </gruppeId> <artifactId> DAO </artifactid> <version> 0.0.1-Snapshot </Version> <Packages> jar </packaging> <name> DAO </name> <beschreibungen> Demo-Projekt für Spring-Boot für FRINGEN-STOTTE FÜR FRINGEN-STOUT FÜR SPRING FÜR SPRING FÜR SPRING FÜR SPRING FÜR SPRING FÜR SPRING FÜR SPRING FÜR SPRING FÜR FRINDE FÜR FRINDE FRÜHE> </Beschreibung <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- Internal reference--> <dependency> <gruppe> cn.elvinle </GroupId> <artifactId> pojo </artifactId> <version> 0.0.1-snapshot </Version> </abhängig> <!-externe Referenz-> <!-https://mvnrepository.com/artifact/com.alibaba/druid-> <GroupiBaBa/ <artifactId> druid </artifactId> </abhängig> <depelzipe> <Groupid> MySQL </Groupid> <artifactId> Mysql-connector-java </artifactid> </abhängig> </gruppis <artifactId> MyBatis-Spring-Boot-Starter </artifactId> </abhängig> </abhängig> <build> <plugins> <plugin> <GroupID> org.springFramework
4.2 Mapper
UsMapper.java:
Public Interface UsMapper {publiclist <Benutzer> getAll ();}UsMapper.xml:
<? namespace = "cn.elvinle.dao.mapper.usmapper"> <select id = "getAll" resultType = "cn.elvinle.pojo.user"> select * vom Benutzer </select> </mapper>
5. Subproject-Service
5.1 pom.xml
<? 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> <elemente> <rubact> </garupd> cnupid> cn.elvinle </artifact> </artifactIf. <version> 0.0.1-Snapshot </Version> </parent> <gruppe> cn.elvinle </Groupid> <artifactId> Service </artifactid> <version> 0.0.1-Snapshot </Version> </packaging> jar </packaging> <name> service </name> <beschreibungs <project.build.sourceencoding> utf-8 </project.build.SourceCoding> <projekts <SupructId> cn.elvinle </GroupID> <artifactId> pojo </artifactId> <version> 0.0.1-Snapshot </Version> </abhängig> </abhängig> <build> <PLUGINS> <CROUPInID> org.springFramework </plugins> </build> </project>
5.2 UserService.java
public interface userservice {publiclist <Benutzer> getAll ();}6. Subproject - Simply
6.1 pom.xml
<? 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> <elemente> <rubact> </garupd> cnupid> cn.elvinle </artifact> </artifactIf. <version> 0.0.1-Snapshot </Version> </parent> <gruppe> cn.elvinle </Groupid> <artifactId> Simpl </artifactId> <version> 0.0.1-Snapshot </Version> </packaging> jar </packaging> <name> Simply> <beschreibungen> Demo-Projekt für Spring Boot </Beschreibung> </Beschreibung <project.build.sourceencoding> utf-8 </project.build.SourceCoding> <projekts <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> </dependency> </dependency> </build> <plugins> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
6.2 UserSimpl
@ServicePublic Class UserSimpl implementiert UserService {@autowired Private UsMapper UsMapper; @Override public list <user> getAll () {System.out.println ("userSimpl getAll"); return userMapper.getall (); }}7. Subproject - Web
Der Schlüsselplatz ist hier.
7.1 pom.xml
<? 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> <elemente> <rubact> </garupd> cnupid> cn.elvinle </artifact> </artifactIf. <version> 0.0.1-Snapshot </Version> </parent> <gruppe> cn.elvinle </gruppen> <artifactid> web </artifactId> <version> 0.0.1-Snapshot </Version> </packaging> jar </packaging> <name> web </name> <beschreibungen> Demo-Projekt für Spring Boot </Beschreibung <project.build.sourceencoding> utf-8 </project.build.SourceCoding> <projekts <gruppeId> cn.elvinle </GroupId> <artifactId> Simple </artifactId> <version> 0.0.1-Snapshot </Version> </abhängig> </abhängig> <build> <PLUGINS> <CROUPSID> org. </plugins> </build> </project>
7.2 application.yml
Server: Kontext-Path:/übergeordneter Port: 8080Mybatis: Konfiguration Ort: /mapper/*.xmlspring: DataSource: Benutzername: Root Passwort: Root URL: JDBC: MySQL: // localhost: 3306/shopp? useUncod = true & charakteristisches und charakteristisches und utf-8-Class: Com.mysql.jdbc.
7.3 Controller
@RastController @requestMapping ("api") öffentlicher Klasse apicontroller {@autowired private userservice userservice; @RequestMapping ("index") publiclist <Unter> index () {list <Unter> all = userService.getall (); Alle zurückgeben; }}Bisher nichts Besonderes, wurde es normal geändert. Als nächstes wird es Unterschiede von denen ohne Module geben.
7.4 Modifikation am Eingang
@Componentscan ({"cn.elvinle"})@SpringBootApplicationPublic Class WebApplication {public static void main (string [] args) {SpringApplication.run (WebApplication.Class, Args); }}Wenn das Programm direkt ausgeführt wird, wird es zu diesem Zeitpunkt nicht erfolgreich abgerufen. Der Grund dafür ist, dass MyBatis 'automatisierte Konfiguration und Automatisierungserstellung in mehreren Modulen nicht unterstützt werden.
Zu diesem Zeitpunkt müssen wir manuell konfigurieren und erstellen.
7.5 MyBatis Java -Konfiguration
<!-MyBatis Factory-> <bean id = " Value = "ClassPath: Mapper /*. xml" />-> < /bean> <!-Der Paketame, in dem sich die DAO-Schnittstelle befindet, findet die Klasse die Klasse automatisch darunter-> <bean id = "mapperscannerConfiger"> <Property name = "basepackage" value = "cn.elvinle.bookshop.Mapper" /> <immobilienname = "sqlvinle. value = "sqlSessionFactory"/> </bean>
Sie können die Java -Konfiguration verwenden, um die obige Konfigurationsdatei zu vergleichen
MyBatisconfig:
@ConfigurationPublic Class myBatisconfig {@Value ("$ {mybatis.config-location}") private String mapperLocationPattern; @Bean @ConfigurationProperties (Präfix = "Spring.DataSource") public DataSource dataSource () {return New com.alibaba.druid.pool.druidDataSource (); } @Bean (name = "sqlSessionFactory") public sqlSessionFactory SQLSessionFactory () löst Ausnahme aus {sqlSessionFactoryBean SQLSessionFactoryBean = new SQLSessionFactoryBean (); SQLSessionFactoryBean.SetDataSource (DataSource ()); PathMatchingResourcePuferresolver resolver = neuer pathMatchingResourcePenNResolver (); SQLSessionFactoryBean.SetMapperLocations (Resolver.getResources (mapPerLocationPattern)); return sqlSessionFactoryBean.getObject (); }}MyBatismapperscannerConfig:
@Configuration@autoconfigurean (mybatisconfig.class) @Mapperscan ("cn.elvinle.dao.mapper") MyBatismappersCannerConfig {public mapperscanCannerCannerCannerCannerCannerCannerCannerCannerCannerCannerCannercannercannercannercannercanner () {mapperscannercanner (mapperscannercanner () {mapperscannercannercanner (mapperscannercannercanner (mapperscannercanner "(MapperscannerCannerCannerCannerCannerCannerCannerCannerCannerCanner (Mapperscannercanner" (; mapperscannerConfiger.setsQlSessionFactoryBeanname ("SQLSessionFactory"); mapperscannerConfiger.setbasepackage ("cn.elvinle.dao.mapper"); Return MapperscannerConfiger; }}OK, hier können Sie das Programm ausführen und die Ergebnisse sehen:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.