摘要:此包名與具體的應用的名稱相關項目入口配置打開文件。在文件中輸入數據庫對象結構。插入并查詢賦給傳入的對象根據查詢查詢全部更新根據刪除同目錄創建文件夾,新建類文件。為項目指定數據庫地址打開文件,配置數據庫信息。獲取數據我們回到這個上。
[TOC]
準備工作 1. 安裝Java 1.8 SDK由于框架以及一些兼容性問題,我們采用大家通用的 JAVA 1.8 sdk。
下載地址: http://www.oracle.com/technet...
安裝完成之后需要設置環境變量。
設置完成之后,驗證系統是否可以正常運行JAVA
這個就不簡述了,大家自由發揮。但是推薦入正版。
3. 安裝Maven下載地址: https://maven.apache.org/down...
下載之后解壓到文件夾,然后與Java sdk一樣配置一個環境變量。
驗證命令
> mvn -v Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:1 4+08:00) Maven home: D:JAVA_TOOLSapache-maven-3.5.4in.. Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: E:Javajre Default locale: zh_CN, platform encoding: GBK OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"初始化項目
打開IDEA,然后新建項目。在左側選擇Spring Initializr,右側SDK選擇1.8。
點擊Next進入下一個界面。
在這個界面上,可以按照自己的發揮編寫點東西。但是作為新手建議不做任何修改,接著Next
這個界面上,要選擇 1. WEB -> WEB 2. SQL -> MyBatis 。 點擊Next,配置項目存放地址。點擊Finish創建項目,并由IDEA載入項目。
這個時候你可以稍微休息一下,等待Maven初始化載入所需要的包。
這個就是項目初始化完成的目錄。
在main目錄下方新建一個DB目錄,并且在目錄上右鍵點擊,新建一個Sqlite數據庫。
在右側DataBase中點擊數據庫,右鍵Open Console,運行如下腳本,創建一個表:
create table hello ( id INTEGER primary key, title varchar(150), text TEXT );配置項目SQLITE 基本配置 Maven配置
打開pom.xml文件,在dependencies節點中增加以下節點
org.xerial sqlite-jdbc 3.21.0.1
保存之后,稍等一會,IDEA會通過MAVEN拉取指定版本的包。
如果沒有成功拉取到包,可以嘗試手動拉取。
點擊刷新,查看dependencies是否多了Sqlite包。
創建config目錄。新增MyBatisConfig文件,代碼如下
package com.example.demo.Config; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.sqlite.SQLiteDataSource; import javax.sql.DataSource; @Configuration public class MyBatisConfig { @Autowired private DataSourceProperties dataSourceProperties; @Bean(name="dataSource") public DataSource dataSource() { SQLiteDataSource dataSource = new SQLiteDataSource(); dataSource.setUrl(dataSourceProperties.getUrl()); return dataSource; } public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); return sqlSessionFactoryBean.getObject(); } }
增加MyBatis的掃描配置文件,新建文件MyBatisMapperScannerConfig,代碼如下:
package com.example.demo.Config; import org.mybatis.spring.mapper.MapperScannerConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyBatisMapperScannerConfig { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); //com.example.demo.dal.mapper 這個包名是所有的Mapper.java文件所在的路徑,該包下面的子包里面的文件同樣會掃描到。 //此包名與具體的應用的名稱相關 mapperScannerConfigurer.setBasePackage("com.example.demo.Mapper"); return mapperScannerConfigurer; } }項目入口配置
打開DemoApplication文件。增加新的注解
package com.example.demo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; // 下面這一行為新增數據庫關聯注解 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @MapperScan("com.example.demo.mapper") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }編寫數據庫對象模型
在目錄中創建Model目錄,并且添加HelloModel類文件。
在文件中輸入數據庫對象結構。
package com.example.demo.Model; public class HelloModel { private long Id; private String Title; private String Text; }
在文件中,點擊右鍵,選擇Generate 選擇 Getter and Setter自動生成對象的GET,SET。
處理完成之后的文件應該是這樣的
package com.example.demo.Model; public class HelloModel { private long Id; public long getId() { return Id; } public void setId(long id) { Id = id; } public String getTitle() { return Title; } public void setTitle(String title) { Title = title; } public String getText() { return Text; } public void setText(String text) { Text = text; } private String Title; private String Text; }
與Model同目錄創建文件夾Mapper,新建一個HelloMapper類文件,編寫以下內容。
package com.example.demo.Mapper; import com.example.demo.Model.*; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Component; import java.util.List; @Mapper @Component public interface HelloMapper { // 插入 并查詢id 賦給傳入的對象 @Insert("INSERT INTO hello(key, value) VALUES(#{key}, #{value})") @SelectKey(statement = "SELECT seq id FROM sqlite_sequence WHERE (name = "hello")", before = false, keyProperty = "id", resultType = int.class) int insert(HelloModel model); // 根據 ID 查詢 @Select("SELECT * FROM hello WHERE id=#{id}") HelloModel select(int id); // 查詢全部 @Select("SELECT * FROM hello") ListselectAll(); // 更新 value @Update("UPDATE hello SET value=#{value} WHERE id=#{id}") int updateValue(HelloModel model); // 根據 ID 刪除 @Delete("DELETE FROM hello WHERE id=#{id}") int delete(Integer id); }
同目錄創建Service文件夾,新建HelloService類文件。編寫以下代碼
package com.example.demo.Service; import com.example.demo.Mapper.HelloMapper; import com.example.demo.Model.HelloModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class HelloService { private final HelloMapper dao; @Autowired public HelloService(HelloMapper dao) { this.dao = dao; } public boolean insert(HelloModel model) { return dao.insert(model) > 0; } public HelloModel select(int id) { return dao.select(id); } public ListselectAll() { return dao.selectAll(); } public boolean updateValue(HelloModel model) { return dao.updateValue(model) > 0; } public boolean delete(Integer id) { return dao.delete(id) > 0; } }
整個項目的Mapper,DAL文件架構看起來應該是這個樣子的。
為項目指定數據庫地址打開srcmain esourcesapplication.properties文件,配置數據庫信息。
spring.datasource.driver-class-name=org.sqlite.JDBC spring.datasource.url=jdbc:sqlite:E:/Java/demo1/src/main/db/myDb spring.datasource.username=root spring.datasource.password=root編寫第一個Hello World
新建一個HelloWorld的類。
將內容替換成如下
package com.example.demo.Controller; import org.springframework.web.bind.annotation.*; @RestController public class HelloWorld { @RequestMapping("/") public String Index() { return "Hello World"; } }
增加了一個名為Index的方法,并且通過注解設置了如何訪問此方法的路徑。
點擊右上角按鈕,運行這個項目。
打開瀏覽器,輸入http://localhost:8080可以看到第一個控制器顯示的內容。
雙擊hello表,顯示表內容
在表界面中,右鍵點擊Add New Row,偽造幾條數據進去
在Controller/HelloWorld文件中,新建List方法。
package com.example.demo.Controller; import com.example.demo.Model.HelloModel; import com.example.demo.Service.HelloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController public class HelloWorld { private final HelloService HelloService; @Autowired public HelloWorld(HelloService HelloService) { this.HelloService = HelloService; } @RequestMapping("/") public String Index() { return "Hello World"; } @RequestMapping("/list") public ListList() { return HelloService.selectAll(); } }
注意我們創建了HelloWorld的DAL層依賴注入。
重新運行整個項目,我們輸入http://localhost:8080/list可以看到,服務端將數據庫內容組合成了JSON輸出給我們了。
在model文件夾中新建ReqBody類文件。輸入以下內容
package com.example.demo.Model; import com.fasterxml.jackson.annotation.JsonProperty; public class ReqBody { /** * 分支名 */ private String Name; public String getName() { return Name; } @JsonProperty(value="Name") public void setName(String name) { Name = name; } public String getEmail() { return Email; } @JsonProperty(value="Email") public void setEmail(String email) { Email = email; } private String Email; }
注意,關注JsonProperty這個注解,我看很多教程都只是說了,使用@RequestBody就可以將POST對象映射出來,但是,經過多次嘗試,發現必須增加這個注解并且指定解析名字。@RequestBody才會正確的解析提交的Application/Json數據格式。
獲取Post數據我們回到HelloWorld這個Controller上。新增一個Post方法,并且指定他的訪問路徑。
@RequestMapping(value = "/post", method = RequestMethod.POST) public String Post( @RequestBody ReqBody map ) throws IOException { return "輸入的姓名是" + map.getName() + ",電子郵件是:" + map.getEmail(); }
打開POSTMAN,POST請求這個接口。
作為有一定的.net開發基礎的前端攻城獅,對于寫JAVA還是略有不擅長。主要需要知道什么是依賴注入,和控制反轉。還有AOP編程。了解這些之后,對于寫項目有莫大的幫助。
另外,十分感謝Java開發的朋友幫助解析困惑。@Alex @青龍
參考文章https://www.jianshu.com/p/418...
項目地址https://github.com/yodfz/springboot-sqlite
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76880.html
摘要:肖鵬微博數據庫那些事兒肖鵬,微博研發中心技術經理,主要負責微博數據庫相關的業務保障性能優化架構設計,以及周邊的自動化系統建設。經歷了微博數據庫各個階段的架構改造,包括服務保障及體系建設微博多機房部署微博平臺化改造等項目。 showImg(https://segmentfault.com/img/bV24Gs?w=900&h=385); 對于手握數據庫的開發人員來說,沒有誤刪過庫的人生是...
摘要:數人云告別人肉運維上海的實錄第二彈來啦本次分享的嘉賓是餓了么團隊負責人虢國飛。虢國飛餓了么團隊負責人從事數據庫領域年,主要關注于數據庫管理自動化建設和等領域的研究。本次主題關于數據安全的保障。在這一層,餓了么做了一些數據方面相關的保護。 數人云告別人肉運維上海Meetup的實錄第二彈來啦!本次分享的嘉賓是餓了么DBA團隊負責人虢國飛。實錄將從用戶訪問、數據庫架構體系、數據備份、數據流轉...
閱讀 2420·2021-11-18 10:02
閱讀 687·2021-10-08 10:04
閱讀 2250·2021-09-03 10:51
閱讀 3540·2019-08-30 15:44
閱讀 2799·2019-08-29 14:09
閱讀 2464·2019-08-29 12:21
閱讀 2064·2019-08-26 13:45
閱讀 1800·2019-08-26 13:25