# Project for learning Spring Boot, RESTful API, and SQLite This is a self-learing project for Spring Boot for RESTful API with SQLite database ## Environments The following tools/libraries are used in this project: 1. Microsoft VS Code 1. OpenJDK 17 1. VSCode extensions: 1. [Debugger for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug) 1. [Extension Pack for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack) 1. [Java Code Generators](https://marketplace.visualstudio.com/items?itemName=sohibe.java-generate-setters-getters) 1. [Language Support for Java(TM) by Red Hat](https://marketplace.visualstudio.com/items?itemName=redhat.java) 1. [Maven for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-maven) 1. [Project Manager for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-dependency) 1. [Spring Boot Dashboard](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-spring-boot-dashboard) 1. [Spring Boot Extension Pack](https://marketplace.visualstudio.com/items?itemName=vmware.vscode-boot-dev-pack) 1. [Spring Boot Tools](https://marketplace.visualstudio.com/items?itemName=vmware.vscode-spring-boot) 1. [Spring Initializr Java Support](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-spring-initializr) 1. [SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite) (Optional) 1. [Test Runner for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test) (Optional) 1. Linux or Windows WSL2 with Bash or Zsh Shell 1. Linux Package 1. `sqlite3` # Create the project from scratch The following steps will create this project from scratch. Assuming the environment has been setup properly. ## Create Spring Boot Project in VSCode 1. Start VSCode (e.g. from CLI: `code .`) and open the project folder 1. Press `CTRL-SHIFT-P` and type `Spring Initializr` 1. Select `Spring Initializr: Create a Maven Project...` 1. Specify Spring Boot Version: `3.2.0` 1. Specify project language: `Java` 1. Input Group Id: `com.example` (or any other you like) 1. Input Artifact Id: `demo` (or any other you like, it will be the project folder too.) 1. Specify packaging type: `Jar` 1. Specify Java version: `17` 1. Choose dependencies: 1. Spring Web 1. Spring Boot DevTools 1. MyBatis Framework 1. Select the directory for file generation (__NOTE__: Project folder will be created under this folder) 1. Now the project layout (needed files and folders) should be created. 1. A dialogue will be prompted for opening the new project in VSCode. You can also Restart the VSCode under the generated project folder directly ## Add Maven dependencies 1. In VSCode Explorer, expand `Maven` panel and locate the `Dependencies` 1. Click the `+` button next to the `Dependencies` dropdown item 1. Type `sqlite-jdbc`, press ENTER, and find `sqlite-jdbc org.xerial`, Select it 1. Type `gson`, press ENTER, and find `gson com.google.code.gson`, Select it 1. New dependence will be downloaded and added ## Update the Maven/Project information (Optional) 1. Open `poe.xml` 1. Change the ``,``,``,`` for your desire 1. Use VSCode to renew (refactor) the folder and file accordingly ``` - src |-main |- java/com/example/demo --> java/{other group}/{other id} |- DemoApplication.java --> MainApplication.java (Note: VSCode will modify the java file accordingly) ## Create/Update the folders or files - data - src |-main |-java/com/example/demo (or other folder) |- model |- ApiController.java |-resources |- mapper |- mainapp.xml |- mybatis |- mybatis-config.xml ## Update/Create the files Refer to the file in this project, update the following files accordingly: - [src/main/resources/mybatis/mybatis-config.xml](src/main/resources/mybatis/mybatis-config.xml) - [src/main/resources/application.properties](src/main/resources/application.properties) - [src/main/resources/mapper/mainapp.xml](src/main/resources/mapper/mainapp.xml) - [src/main/java/com/example/demo/ApiController.java](src/main/java/com/example/demo/ApiController.java) # Init the database and insert sample data Please see the [README for Data folder](data/README.md) file # Start Spring Boot Application To start this Spring Boot Application: 1. Open VSCode 1. Select Spring Boot Dashboard (Left Toolbar) 1. Rollover the APPS dropdown, click `|>>` button # TODO 1. Resolve WARN "MyBatis: No MyBatis mapper was found in '[xx.mapper]' package. Please check your configuration." 1. Why `application.properties` - `spring.datasource.url` is requried even the mybatis config exist 1. what should be the correct value? `jdbc:sqlite:data` or `jdbc:sqlite:data:abc` ok ,but `jdbc:sqlite` not ok. 1. In `src/main/java/com/example/demo/ApiController.java` 1. See the TODO 1. Rewrite the controller code better