本文介绍了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小时内与您取得联系。