<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Spring Boot H2 教程 > 原文: [http://zetcode.com/articles/springbooth2/](http://zetcode.com/articles/springbooth2/) 在 Spring Boot H2 教程中,我們展示了如何在 Spring Boot 中使用嵌入式 H2 內存數據庫。 創建一個簡單的 REST 應用。 Spring 是用于開發 Java 企業應用的 Java 應用框架。 它還有助于集成各種企業組件。 Spring Boot 使創建具有 Spring 動力的生產級應用和服務變得很容易,而對安裝的要求卻最低。 Jetty 是一個開源項目,提供 HTTP 服務器,HTTP 客戶端和 Java Servlet 容器。 該項目是 Eclipse Foundation 的一部分。 Jetty 是一個成熟的項目,始于 1995 年。Jetty 可以輕松地嵌入到設備,工具,框架,應用服務器和群集中。 H2 是完全用 Java 創建的開源關系數據庫管理系統。 它可以嵌入 Java 應用中或以客戶端-服務器模式運行。 它易于部署和安裝,占地面積小。 `JdbcTemplate`是一個 Spring 庫,可以幫助程序員創建與關系數據庫和 JDBC 一起使用的應用。 它會處理許多繁瑣且容易出錯的底層細節,例如處理事務,清理資源以及正確處理異常。 `JdbcTemplate`在 Spring 的`spring-jdbc`模塊中提供。 JSON(JavaScript 對象表示法)是一種輕量級的數據交換格式。 人類可以輕松地進行讀寫,并通過機器解析并生成 JSON。 JSON 的官方互聯網媒體類型為`application/json`。 JSON 文件擴展名是`.json`。 RESTFul 應用遵循 REST 架構樣式,該樣式用于設計網絡應用。 RESTful 應用生成 HTTP 請求,這些請求對資源執行 CRUD(創建/讀取/更新/刪除)操作。 ## Spring Boot RESTFul 應用 H2 可以輕松地與 Spring Boot 一起使用。 當 Spring Boot 在 POM 文件中檢測到 H2 時,它會自動為該應用配置內存 H2 數據庫。 以下是具有 RESTFul 服務的簡單 Spring Boot 應用。 該應用與嵌入式 Jetty 服務器一起運行。 ```java $ tree . ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── zetcode │ │ ├── bean │ │ │ └── Car.java │ │ ├── main │ │ │ └── Application.java │ │ ├── service │ │ │ ├── CarService.java │ │ │ └── ICarService.java │ │ └── web │ │ └── MyController.java │ └── resources │ ├── application.yml │ ├── data-h2.sql │ └── schema-h2.sql └── test └── java ``` 這是項目結構。 `pom.xml` ```java <?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.zetcode</groupId> <artifactId>SpringBootH2</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <dependencies> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` Maven `pom.xml`文件包含 Jetty,H2 驅動程序和 Spring 框架的依賴項。 `Car.java` ```java package com.zetcode.bean; public class Car { private Long id; private String name; private int price; public Car() {} public Car(Long id, String name, int price) { this.id = id; this.name = name; this.price = price; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } @Override public String toString() { return "Car{" + "id=" + id + ", name=" + name + ", price=" + price + '}'; } } ``` 這是`Car` bean 類。 它包含商品 ID,名稱和價格。 `application.yml` ```java spring: datasource: platform: h2 ``` `application.yml`是主要的 Spring Boot 配置文件。 該平臺值用于 SQL 初始化腳本:`schema-${platform}.sql`和`data-${platform}.sql`中。 請注意,我們沒有配置數據源。 這是因為,如果沒有配置數據,Spring 會以內存模式自動配置 H2。 我們希望有一個內存數據庫,因此我們讓 Spring 進行自動配置。 `schema-h2.sql` ```java CREATE TABLE Cars(ID BIGINT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(100), PRICE INT); ``` 該 SQL 腳本創建`Cars`表。 `data-h2.sql` ```java INSERT INTO Cars(Name, Price) VALUES('Audi', 52642); INSERT INTO Cars(Name, Price) VALUES('Mercedes', 57127); INSERT INTO Cars(Name, Price) VALUES('Skoda', 9000); INSERT INTO Cars(Name, Price) VALUES('Volvo', 29000); INSERT INTO Cars(Name, Price) VALUES('Bentley', 350000); INSERT INTO Cars(Name, Price) VALUES('Citroen', 21000); INSERT INTO Cars(Name, Price) VALUES('Hummer', 41400); INSERT INTO Cars(Name, Price) VALUES('Volkswagen', 21600); ``` 該腳本用數據填充表。 這兩個腳本都位于類路徑的根目錄中。 `MyController.java` ```java package com.zetcode.web; import com.zetcode.bean.Car; import com.zetcode.service.ICarService; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { @Autowired private ICarService carService; @RequestMapping("/") public String index(Model model) { return "Home page"; } @RequestMapping(name = "/cars", method = RequestMethod.GET) public List<Car> cars() { List<Car> cars = carService.findAll(); return cars; } } ``` 在`MyController`中,我們有兩種方法可以響應兩個請求。 傳統的 MVC 控制器使用視圖技術執行 HTML 的服務器端渲染。 RESTful Web 服務控制器將數據寫入 HTTP 響應。 默認格式為 JSON。 ```java @RestController public class MyController { ``` `@RestController`注解在 Spring 中創建 RESTFul Web 服務。 ```java @Autowired private ICarService carService; ``` 我們將`CarService`對象注入到屬性中。 服務對象用于從數據庫檢索數據。 ```java @RequestMapping("/") public String index(Model model) { return "Home page"; } ``` 對于根路徑,我們返回一個字符串消息。 ```java @RequestMapping(name = "/cars", method = RequestMethod.GET) public List<Car> cars() { List<Car> cars = carService.findAll(); return cars; } ``` 在`cars()`方法中,我們使用`findAll()`方法找到所有汽車。 汽車對象列表通過 Spring 消息轉換器轉換為 JSON。 `ICarService.java` ```java package com.zetcode.service; import com.zetcode.bean.Car; import java.util.List; public interface ICarService { public List<Car> findAll(); } ``` `ICarService`提供了一種從數據源獲取所有汽車的契約方法。 `CarService.java` ```java package com.zetcode.service; import com.zetcode.bean.Car; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; @Service public class CarService implements ICarService { @Autowired private JdbcTemplate jtm; @Override public List<Car> findAll() { String sql = "SELECT * FROM Cars"; List<Car> cars = jtm.query(sql, new BeanPropertyRowMapper(Car.class)); return cars; } } ``` `CarService`包含`findAll()`方法的實現。 我們借助`JdbcTemplate`從`Cars`表中檢索所有汽車。 ```java @Autowired private JdbcTemplate jtm; ``` 注入`JdbcTemplate`。 ```java String sql = "SELECT * FROM Cars"; ``` 這是要執行的 SQL。 我們從`Cars`表中選擇所有汽車。 ```java List<Car> cars = jtm.query(sql, new BeanPropertyRowMapper(Car.class)); ``` `BeanPropertyRowMapper`將一行轉換為指定映射目標類的新實例。 `Application.java` ```java package com.zetcode.client; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication(scanBasePackages = "com.zetcode") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` `Application`設置 Spring Boot 應用。 ```java $ mvn spring-boot:run ``` 我們啟動 Spring Boot 應用。 ```java $ curl localhost:8080 Home page ``` 當我們請求主頁時,我們會收到字符串消息。 ```java $ curl localhost:8080/cars [{"id":1,"name":"Audi","price":52642},{"id":2,"name":"Mercedes","price":57127}, {"id":3,"name":"Skoda","price":9000},{"id":4,"name":"Volvo","price":29000}, {"id":5,"name":"Bentley","price":350000},{"id":6,"name":"Citroen","price":21000}, {"id":7,"name":"Hummer","price":41400},{"id":8,"name":"Volkswagen","price":21600}] ``` 在這里,我們以 JSON 字符串獲取汽車列表。 在本教程中,我們在 RESTFul Web 應用中使用了內存中的 H2 數據庫。 該應用使用 Spring Boot 框架,并在具有嵌入式 Jetty 的 Web 環境中運行。 您可能也對這些相關教程感興趣: [Spring Boot `DataSourceBuilder`教程](/springboot/datasourcebuilder/), [Spring Boot iText 教程](/articles/springbootitext/), [Spring Boot RESTFul 應用](/articles/springbootrestsimple/), [Spring Web 應用簡介](/articles/springwebfirst/), [Spring Boot 第一個 Web 應用](/articles/springbootwebfirst/)和 [Java 教程](/lang/java/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看