全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Spring Boot实战之Rest接口开发及数据库基本操作

本文介绍了Spring Boot实战之Rest接口开发及数据库基本操作,分享给大家

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,配置数据源及java持久层API相关信息

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 
 
 
# 配置数据库 
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、添加数据模型 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、添加数据访问接口类 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、封装返回的结果

添加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、工程整体结构


8、运行测试,本文中测试使用的是user表,其中包含一些密码等信息未做处理,这个读者自行进行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

测试运行结果

adduser接口



updateuser接口



getuser接口



9、调用以上接口时执行数据库操作时,会在内部转化为以下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、数据库操作

JPA模块支持将查询字符串定义在方法名称中

如上例中

根据id值查询UserInfo实例

UserInfo findUserInfoById(int id);

根据role查询UserInfo实例

List<UserInfo> findUserInfoByRole(String role);

也可以直接使用原生的数据库语句

如下使用@Query注解

@Query(value = "select * from t_user limit ?1", nativeQuery =true)
List<UserInfo> findAllUsersByCount(int count);

11、在方法名中添加查询字符串参考


本文源码下载:http://xiazai./201707/yuanma/SpringRest_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Spring  # Boot  # Rest接口  # Rest  # Spring Boot构建优雅的RESTful接口过程详解  # 详解Spring Boot实战之Restful API的构建  # 利用Spring Boot如何开发REST服务详解  # springboot RESTful以及参数注解的使用方式  # spring常用注解开发一个RESTful接口示例  # 的是  # 会在  # 给大家  # 相关信息  # 可以直接  # 转化为  # 配置文件  # 大家多多  # 源码下载  # 未做  # 其中包含  # persistence  # strategy  # javax  # bean  # import  # Naming  # update  # MySQL5Dialect  # GeneratedValue 


相关文章: 如何快速完成中国万网建站详细流程?  安云自助建站系统如何快速提升SEO排名?  如何在万网自助建站平台快速创建网站?  北京网站制作的公司有哪些,北京白云观官方网站?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  兔展官网 在线制作,怎样制作微信请帖?  为什么Go需要go mod文件_Go go mod文件作用说明  建站VPS配置与SEO优化指南:关键词排名提升策略  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  网站制作服务平台,有什么网站可以发布本地服务信息?  如何通过二级域名建站提升品牌影响力?  建站VPS能否同时实现高效与安全翻墙?  如何选择高性价比服务器搭建个人网站?  如何选择服务器才能高效搭建专属网站?  如何在万网自助建站中设置域名及备案?  制作销售网站教学视频,销售网站有哪些?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何获取上海专业网站定制建站电话?  建站之星图片链接生成指南:自助建站与智能设计教程  宁波自助建站系统如何快速打造专业企业网站?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何高效完成独享虚拟主机建站?  网站网页制作专业公司,怎样制作自己的网页?  如何在建站主机中优化服务器配置?  如何在腾讯云服务器快速搭建个人网站?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  家具网站制作软件,家具厂怎么跑业务?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  招商网站制作流程,网站招商广告语?  建站之星logo尺寸如何设置最合适?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  公司门户网站制作流程,华为官网怎么做?  建站主机默认首页配置指南:核心功能与访问路径优化  如何用免费手机建站系统零基础打造专业网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  IOS倒计时设置UIButton标题title的抖动问题  建站主机选购指南:核心配置与性价比推荐解析  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  宝塔Windows建站如何避免显示默认IIS页面?  建站主机类型有哪些?如何正确选型  建站之星如何修改网站生成路径?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  网站企业制作流程,用什么语言做企业网站比较好?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  智能起名网站制作软件有哪些,制作logo的软件?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  湖北网站制作公司有哪些,湖北清能集团官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。