最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入探究Spring IOC和DI的區(qū)別

 更新時(shí)間:2023年10月22日 10:18:53   作者:小電玩  
很多人都會(huì)把ioc和di說成同一個(gè)東西,其實(shí)IOC和DI雖然在概念上可以籠統(tǒng)地視為同一事物,但其本質(zhì)上存在區(qū)別,因此,我們希望能夠更加嚴(yán)謹(jǐn)?shù)貐^(qū)分這兩個(gè)概念,以更好地理解和應(yīng)用它們,需要的朋友可以參考閱讀本文

一,介紹

前言

很多人都會(huì)把ioc和di說成同一個(gè)東西,其實(shí)IOC和DI雖然在概念上可以籠統(tǒng)地視為同一事物,但其本質(zhì)上存在區(qū)別。IOC(Inverse of Control,控制反轉(zhuǎn))從容器的角度描述,而DI(Dependency Injection,依賴注入)則從應(yīng)用程序的角度描述。換言之,IOC是依賴倒置原則的設(shè)計(jì)思想,而DI則是該原則的具體實(shí)現(xiàn)方式。因此,我們希望能夠更加嚴(yán)謹(jǐn)?shù)貐^(qū)分這兩個(gè)概念,以更好地理解和應(yīng)用它們。

1.什么是IOC

Spring IOC(控制反轉(zhuǎn))是一種設(shè)計(jì)模式,是Spring框架的核心,它通過將對(duì)象之間的依賴關(guān)系交由容器來管理和注入,實(shí)現(xiàn)了組件之間解耦、松耦合的目的。在傳統(tǒng)的Java開發(fā)中,對(duì)象之間的依賴關(guān)系通常是通過手動(dòng)創(chuàng)建和維護(hù)對(duì)象之間的引用關(guān)系來實(shí)現(xiàn)的,這樣會(huì)帶來很多問題,例如代碼的可讀性、可維護(hù)性、可測(cè)試性等方面都會(huì)受到影響。使用IOC后,無需手動(dòng)創(chuàng)建和維護(hù)對(duì)象之間的引用關(guān)系,因?yàn)镾pring容器將自動(dòng)完成這些工作,并且可以根據(jù)需要?jiǎng)討B(tài)地注入不同類型的對(duì)象或數(shù)據(jù),從而實(shí)現(xiàn)靈活性更強(qiáng)、代碼質(zhì)量更高的應(yīng)用程序開發(fā)。

簡(jiǎn)單理解就是原本我們創(chuàng)建對(duì)象的過程是我們手動(dòng)來管理的,比如User user = new User(); 而使用ioc就是來解決這個(gè)問題的,交給容器來管理創(chuàng)建以及管理的過程

IOC容器的初始化有兩種方式:餓漢式初始化和懶加載。

餓漢式初始化是指在容器啟動(dòng)時(shí),立即進(jìn)行對(duì)象的創(chuàng)建和初始化。這種方式適合單例對(duì)象,可以保證對(duì)象在系統(tǒng)啟動(dòng)時(shí)便可用,避免因?yàn)閷?duì)象未初始化而導(dǎo)致的空指針異常等問題。

懶加載則是指只有在需要使用對(duì)象時(shí),才進(jìn)行對(duì)象的創(chuàng)建和初始化。這種方式適合非單例對(duì)象,可以降低系統(tǒng)啟動(dòng)時(shí)間和內(nèi)存消耗。Spring IoC容器默認(rèn)使用懶加載方式,只有在使用`@Lazy`注解或者在配置文件中進(jìn)行特別聲明后,才會(huì)使用餓漢式初始化方式。

下面是兩種初始化方式的示例:

1. 餓漢式初始化方式

@Component
public class MySingletonBean {
    // ...
}
 
@Configuration
public class AppConfig {
    @Bean
    public MySingletonBean mySingletonBean() {
        return new MySingletonBean();
    }
}

在這個(gè)示例中,`MySingletonBean`是一個(gè)單例對(duì)象,通過在配置類中定義`@Bean`方法來進(jìn)行餓漢式初始化。

2. 懶加載方式

@Component
@Lazy
public class MyLazyBean {
    // ...
}

在這個(gè)示例中,`MyLazyBean`是一個(gè)非單例對(duì)象,在它上面使用了`@Lazy`注解,表示使用懶加載方式進(jìn)行初始化。當(dāng)應(yīng)用程序需要使用`MyLazyBean`時(shí),才會(huì)觸發(fā)對(duì)象的創(chuàng)建和初始化。

2.什么是DI

Spring DI(依賴注入)是Spring框架中的一個(gè)核心特性,它是實(shí)現(xiàn)控制反轉(zhuǎn)(IOC)的具體方式之一。DI指的是通過外部配置或注解的方式,將一個(gè)對(duì)象所依賴的其他對(duì)象(依賴)自動(dòng)注入到該對(duì)象中,而不需要在代碼中顯式地創(chuàng)建和管理這些依賴對(duì)象。

通過使用DI,我們可以將對(duì)象之間的依賴關(guān)系從代碼中解耦出來,提高代碼的可讀性、可維護(hù)性和可測(cè)試性。Spring框架通過提供不同的DI實(shí)現(xiàn)方式(如構(gòu)造方法注入、Setter方法注入、注解注入等),使得開發(fā)者可以根據(jù)需求選擇合適的注入方式。

例如,我們可以使用構(gòu)造方法注入,在對(duì)象創(chuàng)建時(shí)通過構(gòu)造方法接收所需的依賴對(duì)象;或者使用Setter方法注入,在對(duì)象創(chuàng)建后通過Setter方法設(shè)置所需的依賴對(duì)象;還可以使用注解注入,在代碼中使用注解標(biāo)記需要注入的依賴對(duì)象。這樣,我們就能夠以一種更靈活、簡(jiǎn)潔的方式管理對(duì)象之間的依賴關(guān)系,提升開發(fā)效率和代碼質(zhì)量。

3.為什么要使用控制反轉(zhuǎn),能給我?guī)砟男┖锰?/h3>

知其然而不知其所以然,是指只知道事物的表面現(xiàn)象!只知道用只是之所以然要明白為什么要用才是知其然而知其所以然。用一東西的時(shí)候而不是會(huì)用就可以了,要明白為什么要用,難道就沒有別的替代方法嗎,答案肯定是有的,有人會(huì)說就是好用才用的,說的沒有錯(cuò),但是這樣我認(rèn)為并沒有去思考為什么要用它為不用別的。接下來我來重點(diǎn)講解

使用Spring的控制反轉(zhuǎn)(IOC)能夠帶來以下好處:

1. 解耦合:將程序中的依賴關(guān)系轉(zhuǎn)到Spring容器進(jìn)行配置,可以減少程序模塊之間的耦合。這樣,當(dāng)一個(gè)組件發(fā)生改變時(shí),不會(huì)影響到系統(tǒng)中其他組件的正常運(yùn)行。

2. 管理對(duì)象的生命周期:Spring容器負(fù)責(zé)管理對(duì)象的生命周期,當(dāng)對(duì)象不再被使用時(shí),容器會(huì)自動(dòng)銷毀其實(shí)例,這可以避免內(nèi)存泄漏等問題。

3. 提高代碼重用性:通過將業(yè)務(wù)邏輯從代碼中分離出來,可以使得代碼更加可重用,降低代碼的維護(hù)成本。

4. 模塊化開發(fā):Spring容器可以組織程序中的所有對(duì)象,使得代碼具有良好的層次結(jié)構(gòu)和模塊化特性,提高代碼的可讀性和可維護(hù)性。

5. 容易測(cè)試:通過控制反轉(zhuǎn),我們可以使用Mock對(duì)象來替代真正的對(duì)象進(jìn)行單元測(cè)試,從而使得測(cè)試變得更加容易,可以提高代碼的質(zhì)量。

總之,使用Spring控制反轉(zhuǎn)可以使得代碼的耦合度更低、可重用性更高、可維護(hù)性更好,使得開發(fā)工作變得更加高效。

二,代碼具體實(shí)現(xiàn)

在Spring Boot中,IoC的實(shí)現(xiàn)方式與傳統(tǒng)的Spring框架類似,但會(huì)更加簡(jiǎn)化和自動(dòng)化。下面是一個(gè)使用Spring Boot實(shí)現(xiàn)IoC的示例:

1. 創(chuàng)建一個(gè)Spring Boot項(xiàng)目,并添加所需的依賴。

2. 編寫一個(gè)接口和相應(yīng)的實(shí)現(xiàn)類:

// 定義一個(gè)接口
public interface MessageService {
    String getMessage();
}
 
// 實(shí)現(xiàn)接口
@Service
public class HelloWorldService implements MessageService {
    @Override
    public String getMessage() {
        return "Hello, World!";
    }
}

3. 在啟動(dòng)類上使用`@SpringBootApplication`注解,它包含了`@ComponentScan`注解,來自動(dòng)掃描并創(chuàng)建所有需要的Bean。

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

4. 在其他需要使用該服務(wù)的地方,可以通過`@Autowired`注解來自動(dòng)注入該Bean。

@RestController
public class MyController {
    @Autowired
    private MessageService messageService;
 
    @GetMapping("/message")
    public String getMessage() {
        return messageService.getMessage();
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為 `HelloWorldService` 的bean,并使用 `@Service` 注解來標(biāo)識(shí)它是一個(gè)服務(wù)類。然后,在啟動(dòng)類中使用 `@SpringBootApplication` 注解來開啟Spring Boot應(yīng)用,并自動(dòng)掃描和創(chuàng)建所有需要的Bean。

在 `MyController` 中,我們使用 `@Autowired` 注解自動(dòng)注入了 `MessageService` 類型的bean。然后,在 `/message` 接口中調(diào)用 `getMessage()` 方法并返回結(jié)果。

Spring Boot會(huì)自動(dòng)注入相關(guān)的Bean,并管理它們的生命周期,無需手動(dòng)配置XML文件。同時(shí),Spring Boot也提供了默認(rèn)的配置,讓開發(fā)者可以快速開始項(xiàng)目,減少了繁瑣的配置過程。

1.詳細(xì)詳解 IOC

在經(jīng)典的三層架構(gòu)中,IoC(控制反轉(zhuǎn))的具體表示通常是在數(shù)據(jù)訪問層(Repository或DAO)和業(yè)務(wù)邏輯層(Service)之間的交互。具體來說,IoC容器負(fù)責(zé)管理并注入數(shù)據(jù)訪問層所需的依賴對(duì)象,例如數(shù)據(jù)庫(kù)連接、事務(wù)管理等。

在這種情況下,數(shù)據(jù)訪問層(Repository或DAO)負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行交互,而業(yè)務(wù)邏輯層(Service)則負(fù)責(zé)處理業(yè)務(wù)規(guī)則和流程。業(yè)務(wù)邏輯層需要依賴數(shù)據(jù)訪問層提供的持久化功能,但它并不直接依賴具體的實(shí)現(xiàn)類,而是通過IoC容器來獲取相應(yīng)的依賴對(duì)象。

通過IoC容器的管理,我們可以在業(yè)務(wù)邏輯層中使用依賴注入(Dependency Injection)來獲取和使用數(shù)據(jù)訪問層的對(duì)象,從而實(shí)現(xiàn)了對(duì)象之間的解耦和靈活性。這樣,在需要替換或擴(kuò)展特定功能時(shí),只需調(diào)整IoC容器的配置即可,而不需要修改業(yè)務(wù)邏輯層的代碼。

總結(jié)起來,IoC的具體表示通常體現(xiàn)在數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層之間的交互,通過IoC容器的管理和依賴注入來實(shí)現(xiàn)對(duì)象的解耦和可替換性。這樣可以提高代碼的可維護(hù)性和可測(cè)試性,并支持應(yīng)用程序的靈活性和擴(kuò)展性。

2.詳細(xì)詳解 DI

DI(依賴注入)是IoC(控制反轉(zhuǎn))的一種實(shí)現(xiàn)方式,它通過將對(duì)象的依賴關(guān)系交由容器來管理,從而解耦對(duì)象之間的依賴關(guān)系。而@Autowired注解是Spring框架中實(shí)現(xiàn)依賴注入的一種方式。使用@Autowired注解可以將需要依賴的對(duì)象自動(dòng)注入到目標(biāo)對(duì)象中,由Spring容器負(fù)責(zé)創(chuàng)建和管理這些被注入的Bean對(duì)象。

對(duì)于@Autowired注解,它確實(shí)是由它來實(shí)現(xiàn)依賴注入,將依賴對(duì)象注入到IOC容器中,并由容器來負(fù)責(zé)管理Bean對(duì)象的生命周期。當(dāng)我們?cè)谛枰褂媚硞€(gè)依賴對(duì)象的地方添加@Autowired注解后,Spring會(huì)自動(dòng)掃描并查找與該依賴類型匹配的Bean對(duì)象,并自動(dòng)將其注入進(jìn)來。

所以您可以說@Autowired注解可以實(shí)現(xiàn)依賴注入,由它將依賴對(duì)象注入到IoC容器進(jìn)行管理,并由容器負(fù)責(zé)管理Bean對(duì)象的生命周期。非常感謝您的理解和提問!

簡(jiǎn)單來說 而di就好理解了@Autowired注解 由它依賴注入到ioc容器中由容器來管理bean的生命周期

三,DI依賴注入的幾種實(shí)現(xiàn)方式

我來給您提供幾種常見的Spring DI(依賴注入)實(shí)現(xiàn)方式,并附上相應(yīng)的代碼示例。

1. 構(gòu)造函數(shù)注入(Constructor Injection):

public class UserService {
    private UserRepository userRepository;
 
    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    // 其他方法...
}

2. 屬性注入(Setter Injection):

public class UserService {
    private UserRepository userRepository;
 
    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    // 其他方法...
}

3. 接口注入(Interface Injection):

public interface UserRepositoryAware {
    void setUserRepository(UserRepository userRepository);
}
 
public class UserService implements UserRepositoryAware {
    private UserRepository userRepository;
 
    @Override
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    // 其他方法...
}

5. XML配置注入(XML Configuration Injection):
在XML配置文件中定義Bean和依賴項(xiàng),并通過<property>元素進(jìn)行注入。示例:

<bean id="userRepository" class="com.example.UserRepositoryImpl" />
<bean id="userService" class="com.example.UserService">
    <property name="userRepository" ref="userRepository" />
</bean>

上述示例展示了幾種常見的Spring DI實(shí)現(xiàn)方式。根據(jù)您的需求和項(xiàng)目結(jié)構(gòu),選擇適合的方式來實(shí)現(xiàn)依賴注入。 

四,@Autowired,@Resource

1.介紹

`@Autowired`和`@Resource`都是Java的注解,用于實(shí)現(xiàn)依賴注入(DI)功能。它們可以將依賴對(duì)象自動(dòng)注入到需要的地方,簡(jiǎn)化了手動(dòng)創(chuàng)建和管理對(duì)象之間的依賴關(guān)系的過程。

1. `@Autowired`注解:

   - `@Autowired`是Spring框架提供的注解,用于自動(dòng)裝配依賴對(duì)象。

   - 使用`@Autowired`可以直接在字段、構(gòu)造方法、Setter方法或者任意方法上標(biāo)注,Spring將根據(jù)類型進(jìn)行自動(dòng)裝配。如果有多個(gè)合適的候選對(duì)象,可以使用`@Qualifier`注解指定具體的bean名稱。

   - 示例:

@Resource
private UserService userService;

Spring將會(huì)自動(dòng)尋找名為`userService`的`UserService`類型的bean,并將其注入到該字段中。

2. `@Resource`注解:

   - `@Resource`是JavaEE標(biāo)準(zhǔn)中定義的注解,也可以實(shí)現(xiàn)依賴注入的功能。

   - `@Resource`既可以根據(jù)名稱進(jìn)行自動(dòng)裝配,也可以根據(jù)類型進(jìn)行自動(dòng)裝配,具備更強(qiáng)的靈活性,默認(rèn)按照名稱進(jìn)行裝配。

   - 示例:

@Resource
     private UserService userService;

@Resource`將會(huì)根據(jù)字段名稱`userService`來查找并注入對(duì)應(yīng)的bean。

兩者的使用場(chǎng)景和功能類似,但在具體實(shí)現(xiàn)細(xì)節(jié)和使用上有一些差異。一般來說,如果項(xiàng)目使用的是Spring框架,推薦使用`@Autowired`注解;如果是JavaEE標(biāo)準(zhǔn)的項(xiàng)目,可以使用`@Resource`注解。當(dāng)然,在實(shí)際使用中也可以根據(jù)具體需求選擇合適的注解。

2.區(qū)別

`@Autowired`和`@Resource`注解的區(qū)別如下:

1. 來源:`@Autowired`是Spring框架提供的注解,而`@Resource`是JavaEE標(biāo)準(zhǔn)中定義的注解。

2. 自動(dòng)裝配方式:`@Autowired`按照類型進(jìn)行自動(dòng)裝配,默認(rèn)情況下要求依賴對(duì)象必須存在。如果存在多個(gè)匹配的bean,可以使用`@Qualifier`注解指定具體的bean名稱。而`@Resource`默認(rèn)按照名稱進(jìn)行自動(dòng)裝配,可以根據(jù)`name`屬性指定特定的bean名稱,也可以根據(jù)`type`屬性進(jìn)行按類型查找。

3. 包含范圍:`@Autowired`只能用于字段、構(gòu)造方法、Setter方法或者任意方法上。而`@Resource`既可以標(biāo)注在字段上,也可以標(biāo)注在setter方法上。

4. 引入的包:`@Autowired`需要導(dǎo)入`org.springframework.beans.factory.annotation.Autowired`包,而`@Resource`需要導(dǎo)入`javax.annotation.Resource`包。

5. 注解來源:`@Autowired`是Spring框架自帶的注解,不依賴于JavaEE環(huán)境。而`@Resource`是JavaEE標(biāo)準(zhǔn)中定義的注解,它依賴于JavaEE環(huán)境。

綜上所述,`@Autowired`和`@Resource`注解在實(shí)現(xiàn)依賴注入功能上有些許差異。`@Autowired`更加強(qiáng)調(diào)按照類型進(jìn)行自動(dòng)裝配,而`@Resource`更加靈活,既可以按照名稱進(jìn)行自動(dòng)裝配,也可以按照類型進(jìn)行自動(dòng)裝配。在使用上,如果是Spring框架的項(xiàng)目,一般推薦使用`@Autowired`注解;如果是JavaEE標(biāo)準(zhǔn)的項(xiàng)目,可以使用`@Resource`注解。但實(shí)際選擇可以根據(jù)具體需求和個(gè)人偏好來確定。

五,總結(jié)

本文從IOC和DI的概念、區(qū)別以及具體實(shí)現(xiàn)方式入手,介紹了Spring框架中實(shí)現(xiàn)依賴注入的基本原理、好處和常見實(shí)現(xiàn)方式,最后對(duì)比了@Autowired和@Resource注解的區(qū)別和使用場(chǎng)景??傮w來說,IOC和DI是Spring框架的核心特性,通過容器管理和注入對(duì)象之間的依賴關(guān)系,極大地提高了代碼的靈活性、可維護(hù)性和可重用性。同時(shí),根據(jù)具體需求和項(xiàng)目結(jié)構(gòu),選擇合適的注解和實(shí)現(xiàn)方式可以更好地實(shí)現(xiàn)依賴注入的功能,提升開發(fā)效率和代碼質(zhì)量。

以上就是深入探究Spring IOC和DI的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于Spring IOC和DI的區(qū)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java 使用JDOM解析xml文件

    java 使用JDOM解析xml文件

    java中如何使用JDOM解析xml文件呢?以下小編就用實(shí)例為大家詳細(xì)的介紹一下。需要的朋友可以參考下
    2013-07-07
  • SpringCloud FeignClient 超時(shí)設(shè)置

    SpringCloud FeignClient 超時(shí)設(shè)置

    FeignClient?默認(rèn)的超時(shí)時(shí)間可能不滿足你的需求,你可以通過幾種方式來自定義這些超時(shí)設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • Java實(shí)現(xiàn)廣度優(yōu)先遍歷的示例詳解

    Java實(shí)現(xiàn)廣度優(yōu)先遍歷的示例詳解

    廣度優(yōu)先遍歷:廣度優(yōu)先遍歷是連通圖的一種遍歷策略,因?yàn)樗乃枷胧菑囊粋€(gè)頂點(diǎn)V0開始,輻射狀地優(yōu)先遍歷其周圍較廣的區(qū)域故得名。本文詳細(xì)介紹了Java如何實(shí)現(xiàn)廣度優(yōu)先遍歷,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-02-02
  • IntelliJ IDEA進(jìn)行中文漢化的詳細(xì)教程(附圖文講解)

    IntelliJ IDEA進(jìn)行中文漢化的詳細(xì)教程(附圖文講解)

    今天為大家?guī)淼氖?nbsp;IntelliJ IDEA 中文漢化教程以及中文插件包下載教程,經(jīng)常收到小伙伴在后臺(tái)給我留言,問 IDEA 怎么進(jìn)行中文漢化,因?yàn)楹芏嘈』锇槭莿側(cè)腴T Java,看到 IDEA 菜單全英文有些不太適應(yīng),需要的朋友可以參考下
    2024-12-12
  • java微信server錄音下載到自己server

    java微信server錄音下載到自己server

    這篇文章主要為大家詳細(xì)介紹了java微信server錄音下載到自己server的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • MybatisPlus擴(kuò)展功能

    MybatisPlus擴(kuò)展功能

    本文介紹了代碼生成器的安裝和使用步驟,以及DB靜態(tài)工具的用途,代碼生成器可以自動(dòng)生成PO、Mapper、Service等相關(guān)代碼,而DB靜態(tài)工具可以避免循環(huán)依賴,提高開發(fā)效率,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Spring MVC 關(guān)于controller的字符編碼問題

    Spring MVC 關(guān)于controller的字符編碼問題

    在使用springMVC框架構(gòu)建web應(yīng)用,客戶端常會(huì)請(qǐng)求字符串、整型、json等格式的數(shù)據(jù),通常使用@ResponseBody注解使 controller回應(yīng)相應(yīng)的數(shù)據(jù)而不是去渲染某個(gè)頁(yè)面。
    2017-03-03
  • IDEA設(shè)置項(xiàng)目默認(rèn)保存位置實(shí)現(xiàn)方式

    IDEA設(shè)置項(xiàng)目默認(rèn)保存位置實(shí)現(xiàn)方式

    本文主要介紹了如何在IDEA中設(shè)置默認(rèn)項(xiàng)目目錄,首先打開IDEA設(shè)置界面,任選一個(gè)項(xiàng)目,然后在彈出的設(shè)置界面中選擇Appearance下的Default project directory,選擇想要的位置設(shè)置好后,點(diǎn)擊apply和OK即可
    2026-04-04
  • Java底層基于二叉搜索樹實(shí)現(xiàn)集合和映射/集合Set功能詳解

    Java底層基于二叉搜索樹實(shí)現(xiàn)集合和映射/集合Set功能詳解

    這篇文章主要介紹了Java底層基于二叉搜索樹實(shí)現(xiàn)集合和映射/集合Set功能,結(jié)合實(shí)例形式分析了Java使用二叉搜索樹實(shí)現(xiàn)集合和映射相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • mybatis通過if語(yǔ)句實(shí)現(xiàn)增刪改查操作

    mybatis通過if語(yǔ)句實(shí)現(xiàn)增刪改查操作

    這篇文章主要介紹了mybatis通過if語(yǔ)句實(shí)現(xiàn)增刪改查操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評(píng)論

乐业县| 建阳市| 乌拉特中旗| 双江| 萝北县| 玉门市| 大悟县| 杭州市| 西林县| 故城县| 洪雅县| 柘荣县| 徐水县| 伊通| 浦北县| 八宿县| 晋城| 灵宝市| 苍山县| 苍山县| 德化县| 遵义县| 卓尼县| 名山县| 华亭县| 鄂伦春自治旗| 库伦旗| 临江市| 承德市| 象山县| 福清市| 博客| 湘乡市| 灯塔市| 法库县| 虹口区| 泾源县| 磐石市| 东兰县| 海盐县| 沭阳县|