詳解Spring Boot實(shí)戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作
本文介紹了Spring Boot實(shí)戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作,分享給大家
1、修改pom.xml,添加依賴庫,本文使用的是mysql
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
2、修改配置文件application.properties,配置數(shù)據(jù)源及java持久層API相關(guān)信息
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/springlearn spring.datasource.username = root spring.datasource.password = root spring.datasource.driverClassName = com.mysql.jdbc.Driver # 配置數(shù)據(jù)庫 spring.jpa.database = MYSQL # 查詢時是否顯示日志 spring.jpa.show-sql = true # Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto = update # Naming strategy spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy # stripped before adding them to the entity manager) spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
3、添加數(shù)據(jù)模型 UserInfo.java
package com.xiaofangtech.sunt.bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
@Entity
@Table(name="t_user")
public class UserInfo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@NotNull
private String name;
private String password;
private String salt;
private String role;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
4、添加數(shù)據(jù)訪問接口類 UserInfoRepository.java
package com.xiaofangtech.sunt.repository;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import com.xiaofangtech.sunt.bean.UserInfo;
public interface UserInfoRepository extends CrudRepository<UserInfo, Integer>{
UserInfo findUserInfoById(int id);
List<UserInfo> findUserInfoByRole(String role);
@Query(value = "select * from t_user limit ?1", nativeQuery =true)
List<UserInfo> findAllUsersByCount(int count);
}
5、添加UserController.java,添加用戶信息的增刪改查操作
package com.xiaofangtech.sunt.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.xiaofangtech.sunt.bean.UserInfo;
import com.xiaofangtech.sunt.repository.UserInfoRepository;
import com.xiaofangtech.sunt.utils.ResultMsg;
import com.xiaofangtech.sunt.utils.ResultStatusCode;
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserInfoRepository userRepositoy;
@RequestMapping("getuser")
public Object getUser(int id)
{
UserInfo userEntity = userRepositoy.findUserInfoById(id);
ResultMsg resultMsg = new ResultMsg(ResultStatusCode.OK.getErrcode(), ResultStatusCode.OK.getErrmsg(), userEntity);
return resultMsg;
}
@RequestMapping("getusers")
public Object getUsers(String role)
{
List<UserInfo> userEntities = userRepositoy.findUserInfoByRole(role);
ResultMsg resultMsg = new ResultMsg(ResultStatusCode.OK.getErrcode(), ResultStatusCode.OK.getErrmsg(), userEntities);
return resultMsg;
}
@Modifying
@RequestMapping("adduser")
public Object addUser(@RequestBody UserInfo userEntity)
{
userRepositoy.save(userEntity);
ResultMsg resultMsg = new ResultMsg(ResultStatusCode.OK.getErrcode(), ResultStatusCode.OK.getErrmsg(), userEntity);
return resultMsg;
}
@Modifying
@RequestMapping("updateuser")
public Object updateUser(@RequestBody UserInfo userEntity)
{
UserInfo user = userRepositoy.findUserInfoById(userEntity.getId());
if (user != null)
{
user.setName(userEntity.getName());
userRepositoy.save(user);
}
ResultMsg resultMsg = new ResultMsg(ResultStatusCode.OK.getErrcode(), ResultStatusCode.OK.getErrmsg(), null);
return resultMsg;
}
@Modifying
@RequestMapping("deleteuser")
public Object deleteUser(int id)
{
userRepositoy.delete(id);
ResultMsg resultMsg = new ResultMsg(ResultStatusCode.OK.getErrcode(), ResultStatusCode.OK.getErrmsg(), null);
return resultMsg;
}
}
6、封裝返回的結(jié)果
添加ResultMsg.java
package com.xiaofangtech.sunt.utils;
public class ResultMsg {
private int errcode;
private String errmsg;
private Object p2pdata;
public ResultMsg(int ErrCode, String ErrMsg, Object P2pData)
{
this.errcode = ErrCode;
this.errmsg = ErrMsg;
this.p2pdata = P2pData;
}
public int getErrcode() {
return errcode;
}
public void setErrcode(int errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public Object getP2pdata() {
return p2pdata;
}
public void setP2pdata(Object p2pdata) {
this.p2pdata = p2pdata;
}
}
添加枚舉類ResultStatusCode.java
package com.xiaofangtech.sunt.utils;
public enum ResultStatusCode {
OK(0, "OK"),
SYSTEM_ERR(30001, "System error");
private int errcode;
private String errmsg;
public int getErrcode() {
return errcode;
}
public void setErrcode(int errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
private ResultStatusCode(int Errode, String ErrMsg)
{
this.errcode = Errode;
this.errmsg = ErrMsg;
}
}
7、工程整體結(jié)構(gòu)

8、運(yùn)行測試,本文中測試使用的是user表,其中包含一些密碼等信息未做處理,這個讀者自行進(jìn)行JsonIgnore處理
提供以下5個接口
http://localhost:8080/user/adduser
http://localhost:8080/user/updateuser
http://localhost:8080/user/getuser?id=13
http://localhost:8080/user/getusers?role=Manager
http://localhost:8080/user/deleteuser?id=13
測試運(yùn)行結(jié)果
adduser接口


updateuser接口


getuser接口


9、調(diào)用以上接口時執(zhí)行數(shù)據(jù)庫操作時,會在內(nèi)部轉(zhuǎn)化為以下SQL語句
Hibernate: insert into t_user (name, password, role, salt) values (?, ?, ?, ?) Hibernate: select userinfo0_.id as id1_0_, userinfo0_.name as name2_0_, userinfo0_.password as password3_0_, userinfo0_.role as role4_0_, userinfo0_.salt as salt5_0_ from t_user userinfo0_ where userinfo0_.id=? Hibernate: update t_user set name=?, password=?, role=?, salt=? where id=? Hibernate: select userinfo0_.id as id1_0_, userinfo0_.name as name2_0_, userinfo0_.password as password3_0_, userinfo0_.role as role4_0_, userinfo0_.salt as salt5_0_ from t_user userinfo0_ where userinfo0_.id=? Hibernate: select userinfo0_.id as id1_0_, userinfo0_.name as name2_0_, userinfo0_.password as password3_0_, userinfo0_.role as role4_0_, userinfo0_.salt as salt5_0_ from t_user userinfo0_ where userinfo0_.role=? Hibernate: select userinfo0_.id as id1_0_0_, userinfo0_.name as name2_0_0_, userinfo0_.password as password3_0_0_, userinfo0_.role as role4_0_0_, userinfo0_.salt as salt5_0_0_ from t_user userinfo0_ where userinfo0_.id=? Hibernate: delete from t_user where id=?
10、數(shù)據(jù)庫操作
JPA模塊支持將查詢字符串定義在方法名稱中
如上例中
根據(jù)id值查詢UserInfo實(shí)例
UserInfo findUserInfoById(int id);
根據(jù)role查詢UserInfo實(shí)例
List<UserInfo> findUserInfoByRole(String role);
也可以直接使用原生的數(shù)據(jù)庫語句
如下使用@Query注解
@Query(value = "select * from t_user limit ?1", nativeQuery =true) List<UserInfo> findAllUsersByCount(int count);
11、在方法名中添加查詢字符串參考

本文源碼下載:http://xiazai.jb51.net/201707/yuanma/SpringRest_jb51.rar
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
rabbitmq使用springboot實(shí)現(xiàn)direct模式(最新推薦)
這篇文章主要介紹了rabbitmq使用springboot實(shí)現(xiàn)direct模式,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
Java字符編碼簡介_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java字符編碼簡介,本文主要包括以下幾個方面:編碼基本知識,Java,系統(tǒng)軟件,url,工具軟件等,感興趣的朋友一起看看吧2017-08-08
Java利用樸素貝葉斯分類算法實(shí)現(xiàn)信息分類
貝葉斯分類算法是統(tǒng)計學(xué)的一種分類方法,它是一類利用概率統(tǒng)計知識進(jìn)行分類的算法。本文將利用樸素貝葉斯分類算法實(shí)現(xiàn)信息分類,需要的可以參考一下2022-06-06

