成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

手把手教你從零開(kāi)始搭建SpringBoot后端項(xiàng)目框架

edagarli / 1847人閱讀

摘要:新建模塊本次項(xiàng)目的框架一共有四層結(jié)構(gòu),也可以說(shuō)是有四個(gè)模塊。然后打開(kāi)目錄下的文件。此時(shí)中就不會(huì)報(bào)錯(cuò)了。實(shí)現(xiàn)定位到,新建名為的包。用于與數(shù)據(jù)庫(kù)字段作一一對(duì)應(yīng)查詢下方列出的所有列定義表名一定注意是否準(zhǔn)確。

原料

新鮮的IntelliJ IDEA、一雙手、以及電腦一臺(tái)。

搭建框架 新建項(xiàng)目

打開(kāi)IDE,點(diǎn)擊File -> New Project。在左側(cè)的列表中的選擇Maven項(xiàng)目,點(diǎn)擊Next。

填寫GroupId和ArtifactId

什么是GroupId和ArtifactId?大家可以參考一下google出來(lái)的定義,可以參考一下。

GroupID是項(xiàng)目組織唯一的標(biāo)識(shí)符,實(shí)際對(duì)應(yīng)JAVA的包的結(jié)構(gòu),是main目錄里java的目錄結(jié)構(gòu)。

ArtifactID就是項(xiàng)目的唯一的標(biāo)識(shí)符,實(shí)際對(duì)應(yīng)項(xiàng)目的名稱,就是項(xiàng)目根目錄的名稱

簡(jiǎn)單理解一下,可以理解為GroupId就是你的Github賬號(hào),而ArtifactId就是你的具體某個(gè)項(xiàng)目,例如這個(gè)例子的源碼,SpringBootDemo,detectiveHLH/springbootdemo
detectiveHLH就是GroupId,而ArtifactId就是后面的項(xiàng)目名稱。

所以,這里應(yīng)該填寫如下(僅供參考)。

GroupId: com.detectivehlh.test
ArtifactId: parent

test為項(xiàng)目的名稱。ArtifactId代表父類,所以就寫parent了。點(diǎn)擊Next。

設(shè)置Project Name和Project Location

ProjectName就寫項(xiàng)目的名稱就好。Project Location就是項(xiàng)目在你本地的真實(shí)路徑。填好之后,點(diǎn)擊Next。

然后可以看到IDE已經(jīng)新建好了項(xiàng)目。

.
├── pom.xml
├── src
│?? ├── main
│?? │?? ├── java
│?? │?? └── resources
│?? └── test
│??     └── java
└── test.iml

然后右下角會(huì)彈出Maven projects need to be imported,選擇右邊的Enable Auto-Imported.然后刪除src目錄。

新建模塊

本次項(xiàng)目的框架一共有四層結(jié)構(gòu),也可以說(shuō)是有四個(gè)模塊。分別是api、core、data、domain.我們從底層開(kāi)始,自底向上開(kāi)始構(gòu)建模塊。

domain

存放實(shí)體類

點(diǎn)擊File -> New -> Module,在左側(cè)的列表中選擇Maven,點(diǎn)擊Next。在ArtifactId處填 domain,一路Next。

data模塊

主要是做一些對(duì)數(shù)據(jù)庫(kù)的操作

點(diǎn)擊File -> New -> Module,在左側(cè)的列表中選擇Maven,點(diǎn)擊Next。在ArtifactId處填 data,一路Next。在模塊中其實(shí)是存在相互依賴關(guān)系的。
data模塊依賴domain模塊的實(shí)體。所以要在data文件的配置文件中實(shí)現(xiàn)對(duì)domain的依賴。

打開(kāi)data目錄中的pom.xml文件。在下,添加如下代碼。


    
        com.detectivehlh.test
        domain
        1.0-SNAPSHOT
    
core模塊

后端主要的業(yè)務(wù)邏輯都會(huì)在core模塊中。

點(diǎn)擊File -> New -> Module,在左側(cè)的列表中選擇Maven,點(diǎn)擊Next。在ArtifactId處填 core,一路Next。同上,此處也需要配置依賴關(guān)系。
core模塊的中的service會(huì)依賴data模塊中的數(shù)據(jù)。

打開(kāi)core目錄下的pom.xml文件。在下,添加如下代碼。


    
        com.detectivehlh.test
        data
        1.0-SNAPSHOT
    
api模塊

主要是存放供前端調(diào)用的接口。

點(diǎn)擊File -> New -> Module,在左側(cè)的列表中選擇Maven,點(diǎn)擊Next。在ArtifactId處填 api,一路Next。此處的api模塊依賴core中的service服務(wù)。

打開(kāi)api目錄下的pom.xml文件。在下,添加如下代碼。


    
        com.detectivehlh.test
        core
        1.0-SNAPSHOT
    
讓項(xiàng)目"走兩步"

到此,框架算是搭建好了,下一步就是要讓項(xiàng)目"走兩步"來(lái)看看。此時(shí)的項(xiàng)目的目錄如下。

.
├── api
│?? ├── api.iml
│?? ├── pom.xml
│?? └── src
│??     ├── main
│??     │?? ├── java
│??     │?? └── resources
│??     └── test
│??         └── java
├── core
│?? ├── pom.xml
│?? └── src
│??     ├── main
│??     │?? ├── java
│??     │?? └── resources
│??     └── test
│??         └── java
├── data
│?? ├── pom.xml
│?? └── src
│??     ├── main
│??     │?? ├── java
│??     │?? └── resources
│??     └── test
│??         └── java
├── domain
│?? ├── pom.xml
│?? └── src
│??     ├── main
│??     │?? ├── java
│??     │?? └── resources
│??     └── test
│??         └── java
├── pom.xml
└── test.iml

定位到/api/src/main/java,在java目錄下新建package,名字為你之前定義的groupid再加上模塊名,舉個(gè)例子。我這的名字就應(yīng)該為com.detectivehlh.test.api,然后
在該包下新建名為Application的class。然后將代碼替換成如下代碼。

package com.detectivehlh.test.api;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

此時(shí)會(huì)報(bào)錯(cuò),是因?yàn)閟pringboot的各項(xiàng)依賴,都還沒(méi)有引入項(xiàng)目的dependences。打開(kāi)根目錄下的pom.xml文件,添加如下依賴。

 
    org.springframework.boot
    spring-boot-starter-parent
    2.0.4.RELEASE
     

然后打開(kāi)api目錄下的pom.xml文件。在dependencies標(biāo)簽中添加如下依賴。


    org.springframework.boot
    spring-boot


    org.springframework.boot
    spring-boot-autoconfigure


    org.springframework.boot
    spring-boot-starter-web

此時(shí)Application中就不會(huì)報(bào)錯(cuò)了。然后就可以啟動(dòng)項(xiàng)目了。打開(kāi)Application這個(gè)類,在SpringBootApplication注解下有個(gè)綠色的啟動(dòng)鍵,點(diǎn)擊即可啟動(dòng)項(xiàng)目。之后可在右上方啟動(dòng)。

啟動(dòng)之后,打開(kāi)http://localhost:8080,如果頁(yè)面顯示

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Sep 18 19:01:11 CST 2018

There was an unexpected error (type=Not Found, status=404).
No message available

那么一個(gè)簡(jiǎn)單的springboot應(yīng)用就可以啟動(dòng)成功了。

實(shí)現(xiàn)controller層

com.detectivehlh.test.api包下,新建一個(gè)名為controller的包。然后新建名為HelloController的class。
將其全部替換為如下代碼(包名根據(jù)你的項(xiàng)目命名自行修改)。

package com.detectivehlh.test.api.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, SpringBoot";
    }
}

重新啟動(dòng)項(xiàng)目,訪問(wèn)http://localhost:8080/hello,就可以看到頁(yè)面顯示如下信息。

Hello, SpringBoot

@RestController注解比較適用于Restful風(fēng)格的API,如果接口只關(guān)心數(shù)據(jù),不做server render,就可以使用@RestController注解。
如果接口需要返回模版頁(yè)面,則需要使用@Controller注解。

@GetMapping注解,是將HTTP Get請(qǐng)求映射到我們自定義的hello方法上。

實(shí)現(xiàn)service層 新建CoreConfiguration

定位到/core/src/main/java,在java目錄下新建名為com.detectivehlh.test.core的包。然后在該包新建名為CoreConfiguration的Class。
將其全部替換為如下代碼(包名根據(jù)你的項(xiàng)目命名自行修改)。

package com.detectivehlh.test.core;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @author detectiveHLH
 * @date 2018/09/13
 */
@ComponentScan
@Configuration
public class CoreConfiguration {

}
引入依賴

此時(shí)會(huì)報(bào)錯(cuò),同樣是因?yàn)橐蕾嚊](méi)有引入。在core的pom.xml文件中的dependencies標(biāo)簽中添加如下依賴。


    org.springframework
    spring-context
    5.0.5.RELEASE

稍等片刻,就不會(huì)有報(bào)錯(cuò)提示了。

新建Interface

在com.detectivehlh.test.core包下新建一個(gè)名為service的包。在service包下新建一個(gè)Class,
名字為HelloService,類型選擇Interface。然后修改代碼如下(包名根據(jù)你的項(xiàng)目命名自行修改)。

package com.detectivehlh.test.core.service;

public interface HelloService {
    String sayHello();
}
新建實(shí)現(xiàn)類

在service目錄下新建名為impl的包。然后在impl下新建名為HelloServiceImpl的類。修改代碼如下(包名根據(jù)你的項(xiàng)目命名自行修改)。

package com.detectivehlh.test.core.service.impl;

import com.detectivehlh.test.core.service.HelloService;
import org.springframework.stereotype.Service;

@Service
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello() {
        return "Hello, SpringBoot";
    }
}
調(diào)用實(shí)現(xiàn)類

修改HelloController中的 hello 方法的代碼如下(包名根據(jù)你的項(xiàng)目命名自行修改)。

package com.detectivehlh.test.api.controller;

import com.detectivehlh.test.core.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * RestController
 * 定義為Restful風(fēng)格的API控制器
 */
@RestController
public class HelloController {
    @Autowired
    private HelloService helloService;
    
    @GetMapping("/hello")
    public String hello() {
        return helloService.sayHello();
    }
}

此時(shí)helloService會(huì)報(bào)錯(cuò),這是因?yàn)槲覀儧](méi)有將HelloService這個(gè)添加到Bean容器中來(lái)。修改Application類代碼如下(包名根據(jù)你的項(xiàng)目命名自行修改)。

package com.detectivehlh.test.api;

import com.detectivehlh.test.core.CoreConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;

@SpringBootApplication
@Import(CoreConfiguration.class)
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

此時(shí)再訪問(wèn)http://localhost:8080/hello,就可以看到如下正常的輸出了。

Hello, SpringBoot
打通數(shù)據(jù)庫(kù)

實(shí)現(xiàn)了簡(jiǎn)單的service,下一步就是要連接數(shù)據(jù)庫(kù)。假設(shè)現(xiàn)在在你本地已經(jīng)有了mysql服務(wù)。有名為test的數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)下有名為user_role的表。表結(jié)構(gòu)如下。

數(shù)據(jù)庫(kù)表名和表數(shù)據(jù)
column_name column_value
id 用戶id
name 用戶名

并且有了數(shù)據(jù)

column_name column_value
id name
1 detectiveHLH
新建實(shí)體類

定位到/domain/src/main/java,在java目錄下新建名為com.detectivehlh.test.domain的包。在該包下新建entity包。
在entity下新建名為BaseEntity的抽象類。修改代碼如下。

package com.detectivehlh.test.domain.entity;

public abstract class BaseEntity {

    private long createdAt;

    private String createdBy;

    private long updatedAt;

    private String updatedBy;

    public long getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(long createdAt) {
        this.createdAt = createdAt;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public long getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(long updatedAt) {
        this.updatedAt = updatedAt;
    }

    public String getUpdatedBy() {
        return updatedBy;
    }

    public void setUpdatedBy(String updatedBy) {
        this.updatedBy = updatedBy;
    }
}

在entity下新建名為UserRole的類。代碼如下。

package com.detectivehlh.test.domain.entity;

public class UserRole extends BaseEntity {
    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;
    }
}
新建dao層

實(shí)現(xiàn)與數(shù)據(jù)庫(kù)交互的mapper。

定位到/data/src/main/java,在java目錄下新建名為com.detectivehlh.test.data的包。在該包下新建名為dao的包和名為
DataConfiguration的類。然后在dao包下新建名為UserRoleMapper的類。DataConfiguration代碼如下。

package com.detectivehlh.test.data;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @author duzhengkang
 * @date 2018/6/25
 */
@ComponentScan
@Configuration
@MapperScan("com.detectivehlh.test.data.dao")
public class DataConfiguration {

}

將UserRoleMapper的代碼修改為如下。

package com.detectivehlh.test.data.dao;

import com.detectivehlh.test.domain.entity.UserRole;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface UserRoleMapper {
    /**
     * 查詢所有的用戶角色
     * @return
     */
    List all();
}

此時(shí)代碼會(huì)報(bào)錯(cuò),同樣的依賴原因。打開(kāi)根目錄下的pom.xml文件。添加如下依賴。


    com.alibaba
    druid
    1.1.10


    com.github.pagehelper
    pagehelper-spring-boot-starter
    1.2.5


    mysql
    mysql-connector-java
    6.0.6


    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    1.3.2

添加如上依賴,稍等片刻,就不會(huì)報(bào)錯(cuò)了。但是此時(shí)運(yùn)行項(xiàng)目依舊會(huì)報(bào)錯(cuò)。是因?yàn)槲覀円肓薽ybatis但是卻沒(méi)有配置文件。以及沒(méi)有將mapper注入到容器中去。

修改Application中的代碼如下。

package com.detectivehlh.test.api;

import com.detectivehlh.test.core.CoreConfiguration;
import com.detectivehlh.test.data.DataConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;

@SpringBootApplication
@Import({CoreConfiguration.class, DataConfiguration.class})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

mapper就被注入到容器中去了。下一步需要添加配置文件。定位到/api/src/main/resources,新建application.yaml文件。
修改代碼如下。

spring:
  application:
    name: test
# 數(shù)據(jù)庫(kù)配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 9687Luohongwei
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
# mapper文件配置
mybatis:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

修改完畢后,啟動(dòng)項(xiàng)目,訪問(wèn)http://localhost:8080/hello,就可以看到正常輸出了。

實(shí)現(xiàn)mapper

定位到/data/src/main/resources,新建名為mapper的包。在mapper包下新建名為UserRoleMapper的xml文件。修改代碼如下。




    
    
        
        
    

    
    
        id, name
    

    
    
        user_role
    

    

一定注意namespace是否準(zhǔn)確。

調(diào)用mapper

修改實(shí)現(xiàn)類HelloServiceImpl代碼如下。

package com.detectivehlh.springbootdemo.core.service.impl;

import com.detectivehlh.springbootdemo.core.service.HelloService;
import com.detectivehlh.springbootdemo.data.dao.UserRoleMapper;
import com.detectivehlh.springbootdemo.domain.entity.UserRole;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class HelloServiceImpl implements HelloService {
    @Autowired
    private UserRoleMapper userRoleMapper;

    @Override
    public List createToken(String key) {
        List data = userRoleMapper.all();
        return data;
    }
}

此時(shí)會(huì)報(bào)錯(cuò),是因?yàn)閷?shí)現(xiàn)類中的返回類型已經(jīng)變成了List,而接口中的返回值還是String類型的。所以只需要修改HelloService代碼如下即可。

package com.detectivehlh.test.core.service;

import com.detectivehlh.test.domain.entity.UserRole;
import java.util.List;

public interface HelloService {
    List sayHello();
}

讓我們回到controller中,我們發(fā)現(xiàn)在HelloController中也有報(bào)錯(cuò)。這個(gè)錯(cuò)誤同樣也是因?yàn)榉祷仡愋筒灰恢碌脑颍薷拇a如下。

package com.detectivehlh.test.api.controller;

import com.detectivehlh.test.core.service.HelloService;
import com.detectivehlh.test.domain.entity.UserRole;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * RestController
 * 定義為Restful風(fēng)格的API控制器
 */
@RestController
public class HelloController {
    @Autowired
    private HelloService helloService;

    @GetMapping("/hello")
    public List hello() {
        return helloService.sayHello();
    }
}

然后啟動(dòng)項(xiàng)目,訪問(wèn)http://localhost:8080/hello。就可以看到,接口返回了user_role表中的所有數(shù)據(jù)。

[
    {
        "createdAt": 0,
        "createdBy": null,
        "updatedAt": 0,
        "updatedBy": null,
        "id": 1,
        "name": "Tom"
    }
]

此時(shí)雖然能夠正常訪問(wèn),但是會(huì)在控制臺(tái)報(bào)如下警告。

Tue Sep 18 20:40:22 CST 2018 WARN: Establishing SSL connection without server"s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn"t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to "false". You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

在com.detectivehlh.test.api包下新建config包,在config包中新建DbConfig文件。代碼如下。

package com.detectivehlh.test.api.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
/**
 * DbConfig
 *
 * @author detectiveHLH
 * @date 2018-07-27 10:35
 **/
@Configuration
@ConfigurationProperties
@EnableTransactionManagement
public class DbConfig {
    @Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
    @Bean
    public JdbcTemplate jdbcTemplate(){
        return new JdbcTemplate(dataSource());
    }
    @Bean
    public PlatformTransactionManager transactionManager(){
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource());
        return dataSourceTransactionManager;
    }
}

重啟啟動(dòng)項(xiàng)目,訪問(wèn)接口時(shí)就不會(huì)有警告了。

最后的代碼目錄結(jié)構(gòu)如下。

.
├── api
│?? ├── api.iml
│?? ├── pom.xml
│?? ├── src
│?? │?? ├── main
│?? │?? │?? ├── java
│?? │?? │?? │?? └── com
│?? │?? │?? │??     └── detectivehlh
│?? │?? │?? │??         └── test
│?? │?? │?? │??             └── api
│?? │?? │?? │??                 ├── Application.java
│?? │?? │?? │??                 ├── config
│?? │?? │?? │??                 │?? └── DbConfig.java
│?? │?? │?? │??                 └── controller
│?? │?? │?? │??                     └── HelloController.java
│?? │?? │?? └── resources
│?? │?? │??     └── application.yml
│?? │?? └── test
│?? │??     └── java
│?? └── target
│??     ├── classes
│??     │?? ├── application.yml
│??     │?? └── com
│??     │??     └── detectivehlh
│??     │??         └── test
│??     │??             └── api
│??     │??                 ├── Application.class
│??     │??                 ├── config
│??     │??                 │?? └── DbConfig.class
│??     │??                 └── controller
│??     │??                     └── HelloController.class
│??     └── generated-sources
│??         └── annotations
├── core
│?? ├── pom.xml
│?? ├── src
│?? │?? ├── main
│?? │?? │?? ├── java
│?? │?? │?? │?? └── com
│?? │?? │?? │??     └── detectivehlh
│?? │?? │?? │??         └── test
│?? │?? │?? │??             └── core
│?? │?? │?? │??                 ├── CoreConfiguration.java
│?? │?? │?? │??                 └── service
│?? │?? │?? │??                     ├── HelloService.java
│?? │?? │?? │??                     └── impl
│?? │?? │?? │??                         └── HelloServiceImpl.java
│?? │?? │?? └── resources
│?? │?? └── test
│?? │??     └── java
│?? └── target
│??     ├── classes
│??     │?? └── com
│??     │??     └── detectivehlh
│??     │??         └── test
│??     │??             └── core
│??     │??                 ├── CoreConfiguration.class
│??     │??                 └── service
│??     │??                     ├── HelloService.class
│??     │??                     └── impl
│??     │??                         └── HelloServiceImpl.class
│??     └── generated-sources
│??         └── annotations
├── data
│?? ├── pom.xml
│?? ├── src
│?? │?? ├── main
│?? │?? │?? ├── java
│?? │?? │?? │?? └── com
│?? │?? │?? │??     └── detectivehlh
│?? │?? │?? │??         └── test
│?? │?? │?? │??             └── data
│?? │?? │?? │??                 ├── DataConfiguration.java
│?? │?? │?? │??                 └── dao
│?? │?? │?? │??                     └── UserRoleMapper.java
│?? │?? │?? └── resources
│?? │?? │??     └── mapper
│?? │?? │??         └── UserRoleMapper.xml
│?? │?? └── test
│?? │??     └── java
│?? └── target
│??     ├── classes
│??     │?? ├── com
│??     │?? │?? └── detectivehlh
│??     │?? │??     └── test
│??     │?? │??         └── data
│??     │?? │??             ├── DataConfiguration.class
│??     │?? │??             └── dao
│??     │?? │??                 └── UserRoleMapper.class
│??     │?? └── mapper
│??     │??     └── UserRoleMapper.xml
│??     └── generated-sources
│??         └── annotations
├── domain
│?? ├── pom.xml
│?? ├── src
│?? │?? ├── main
│?? │?? │?? ├── java
│?? │?? │?? │?? └── com
│?? │?? │?? │??     └── detectivehlh
│?? │?? │?? │??         └── test
│?? │?? │?? │??             └── domain
│?? │?? │?? │??                 └── entity
│?? │?? │?? │??                     ├── BaseEntity.java
│?? │?? │?? │??                     └── UserRole.java
│?? │?? │?? └── resources
│?? │?? └── test
│?? │??     └── java
│?? └── target
│??     ├── classes
│??     │?? └── com
│??     │??     └── detectivehlh
│??     │??         └── test
│??     │??             └── domain
│??     │??                 └── entity
│??     │??                     ├── BaseEntity.class
│??     │??                     └── UserRole.class
│??     └── generated-sources
│??         └── annotations
├── pom.xml
└── test.iml
寫在后面

寫的比較詳細(xì),如果有不對(duì)的地方,大佬盡管懟。本項(xiàng)目的源碼在 這里

個(gè)人博客在 這里

Github在 這里,歡迎star或follow。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77190.html

相關(guān)文章

  • 把手教你從零搭建react局部熱加載環(huán)境

    摘要:有沒(méi)有辦法實(shí)現(xiàn)就局部刷新呢當(dāng)然是有第十步執(zhí)行為了實(shí)現(xiàn)局部熱加載,我們需要添加插件。 前言 用了3個(gè)多月的vue自認(rèn)為已經(jīng)是一名合格的vue框架api搬運(yùn)工,對(duì)于vue的api使用到達(dá)了一定瓶頸,無(wú)奈水平有限,每每深入底層觀賞源碼時(shí)候都迷失了自己。 遂決定再找個(gè)框架學(xué)習(xí)學(xué)習(xí)看看能否突破思維局限,加上本人早已對(duì)React、RN技術(shù)垂涎已久,于是決定找找教程來(lái)學(xué)習(xí)。無(wú)奈第一步就卡在了環(huán)境搭...

    quietin 評(píng)論0 收藏0
  • 把手教你從零寫一個(gè)簡(jiǎn)單的 VUE

    摘要:本系列是一個(gè)教程,下面貼下目錄手把手教你從零寫一個(gè)簡(jiǎn)單的手把手教你從零寫一個(gè)簡(jiǎn)單的模板篇今天給大家?guī)?lái)的是實(shí)現(xiàn)一個(gè)簡(jiǎn)單的類似一樣的前端框架,框架現(xiàn)在應(yīng)該算是非常主流的前端數(shù)據(jù)驅(qū)動(dòng)框架,今天我們來(lái)從零開(kāi)始寫一個(gè)非常簡(jiǎn)單的框架,主要是讓大家 本系列是一個(gè)教程,下面貼下目錄~1.手把手教你從零寫一個(gè)簡(jiǎn)單的 VUE2.手把手教你從零寫一個(gè)簡(jiǎn)單的 VUE--模板篇 今天給大家?guī)?lái)的是實(shí)現(xiàn)一個(gè)簡(jiǎn)單...

    RebeccaZhong 評(píng)論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務(wù)方面的使用。目標(biāo)達(dá)成后還會(huì)有去構(gòu)建微服務(wù),希望大家多多支持。原文地址手把手教程優(yōu)雅的應(yīng)用四手把手實(shí)現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學(xué)習(xí) | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評(píng)論0 收藏0
  • 小強(qiáng)開(kāi)飯店-從單體應(yīng)用到微服務(wù)

    摘要:本篇博客通過(guò)小強(qiáng)開(kāi)飯店的通俗易懂的故事,帶你了解后端服務(wù)是如果從單體應(yīng)用演變到微服務(wù)的。小強(qiáng)開(kāi)飯店有一天,小強(qiáng)為了早日奔赴小康生活,打算開(kāi)一個(gè)飯店來(lái)幫他快速的實(shí)現(xiàn)這個(gè)目標(biāo)。于是小強(qiáng)開(kāi)始給服務(wù)盡量的無(wú)狀態(tài)化,然后在一個(gè)服務(wù)器上啟動(dòng)了幾個(gè)實(shí)例。 本篇博客通過(guò)小強(qiáng)開(kāi)飯店的通俗易懂的故事,帶你了解后端服務(wù)是如果從單體應(yīng)用演變到微服務(wù)的。如果有說(shuō)的不對(duì)的地方,歡迎各位大佬強(qiáng)勢(shì)懟。 小強(qiáng)開(kāi)飯店 有...

    shengguo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<