Spring boot + Mybatis + SQLite 搭建blog API
阿新 • • 發佈:2020-07-04
Spring boot + Mybatis + SQLite 搭建blog API
一、準備環境
二、建立一個SpringBoot專案
在此我就不再演示如何建立SpringBoot專案了,需要的請看【 碼出精彩人生】這位大佬的部落格
三、在pom.xml檔案中新增所需要的依賴jar
使用sqlite資料庫需要引入sqlite-jdbc.jar包
<!-- SQLite 驅動 --> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.21.0.1</version> </dependency>
pom.xml檔案依賴如下
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <!-- SQLite 驅動 --> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.21.0.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.22</version> </dependency> </dependencies>
四、建立sqlite資料庫
1、在專案的根目錄下建立檔案 blog-db.sqlite (名字隨便起)
2、然後在IDEA右邊邊上有一個Database,點選建立SQLite資料庫
3、File-->>選擇第一步建立的 blog-db.sqlite ,然後點選Test Connection 測試是否連線成功
4、建立 d_user 表
(1) 控制檯建立表
拷貝下面建立表語句,執行即可建立表
create table d_users ( id int constraint "d-users_pk" primary key, username text not null, password text not null, start int default 1 not null, foundTime text );
(2)手動建立
五、一切準備就緒開始寫業務。
1、新增配置檔案application.yaml
把建立專案生成的.properties配置檔案刪除,建立一個 application.yaml,配置檔案放在 resources 目錄下
server:
port: 8989 # 埠號
spring:
datasource:
url: jdbc:sqlite:D:/Software/PycharmProjects/d-blog/blog-db.sqlite # 建立的sqlite資料庫所在路徑
username: # 因為沒有使用者名稱和密碼,所以這兩個引數就沒有值
password:
driver-class-name: org.sqlite.JDBC # sqlite驅動
# mybatis配置
mybatis:
mapper-locations: classpath:mybatis/mapper/*Mapper.xml # 配置mapper.xml檔案路徑
type-aliases-package: com.desire.entity # 實體類包名
2、根據資料庫表建立實體類--UserEntity.java
package com.desire.entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class UserEntity {
private int id;
private String userName;
private String password;
private int start;
private String foundTime;
}
3、在resources/mybatis/mapper中建立--UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.desire.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.desire.entity.UserEntity">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="userName" jdbcType="VARCHAR" property="userName" />
<result column="password" jdbcType="VARCHAR" property="password" />
<result column="start" jdbcType="INTEGER" property="start" />
<result column="foundTime" jdbcType="VARCHAR" property="foundTime" />
</resultMap>
<select id="findUserById" resultType="com.desire.entity.UserEntity">
select * from d_users where id = #{id}
</select>
<select id="findUserAll" resultMap="BaseResultMap" resultType="com.desire.entity.UserEntity">
select * from d_users
</select>
</mapper>
4、建立mapper介面--UserMapper.java
package com.desire.mapper;
import com.desire.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
UserEntity findUserById(int id);
List<UserEntity> findUserAll();
}
5、建立service實現mapper介面--UserService.java
package com.desire.service;
import com.desire.entity.UserEntity;
import com.desire.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService implements UserMapper {
@Autowired
private UserMapper userMapper;
@Override
public UserEntity findUserById(int id){
return userMapper.findUserById(id);
}
@Override
public List<UserEntity> findUserAll() {
return userMapper.findUserAll();
}
}
6、建立Controller--UserController.java
package com.desire.controller;
import com.desire.common.Result;
import com.desire.common.ResultUtil;
import com.desire.entity.UserEntity;
import com.desire.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@ResponseBody
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("getUser/{id}")
public Result<UserEntity> getUser(@PathVariable int id) {
return ResultUtil.success(userService.findUserById(id));
}
@RequestMapping("getUsers")
public Result<UserEntity> getUsers() {
return ResultUtil.success(userService.findUserAll());
}
}
7、規範化封裝統一返回資料格式
1)定義http請求返回的最外層物件,封裝返回資料的統一格式 --Result.java
package com.desire.common;
/**
* http請求返回的最外層物件
* @param <T>
*/
public class Result<T> {
/**
* 錯誤碼.
*/
private Integer code;
/**
* 提示資訊.
*/
private String msg;
/**
* 具體的內容.
*/
private T data;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
2) 為了統一管理返回資料結果code和message,新建一個列舉類ResultEnum.java
package com.desire.common;
public enum ResultEnum {
UNKONW_ERROR(1001, "未知錯誤"),
SUCCESS(200, "成功")
;
private Integer code;
private String msg;
ResultEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
3) 為了防止多次出現new Result()的程式碼造成冗餘,增加一個工具類ResultUtil.java
package com.desire.common;
/**
* 為了避免上面出現的程式碼冗餘情況,應該增加工具類,封裝請求失敗和成功時候的方法,這裡可使用靜態方法
*/
public class ResultUtil {
public static Result success(Object object) {
Result result = new Result();
result.setCode(ResultEnum.SUCCESS.getCode());
result.setMsg(ResultEnum.SUCCESS.getMsg());
result.setData(object);
return result;
}
public static Result success() {
return success(null);
}
public static Result error(Integer code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
六、啟動專案,驗證寫的是否正確--成功
七、寫在最後
這個例子只實現了兩個介面
- 根據id查詢使用者: http://localhost:8989/user/getUser/2
- 查詢全部使用者: http://localhost:8989/user/getUsers
最近在寫一個部落格相關的專案,前端vue部分已經完成(感覺寫的很low),不過還有待繼續改進,我也在繼續學習vue,所用介面,用的是json server 做的服務。
有興趣的可以看下,提點意見,【personal_blog】
這個SpringBoot專案就是我做的部落格的介面服務,後續要把前端中的json server換成真實的介面。持續更新中,寫的不好請給我提些建議。感謝看到最後。