Spring Boot实战之Rest接口开发及数据库基本操作
来源:互联网 发布:剑灵捏脸数据怎么下载 编辑:程序博客网 时间:2024/06/14 05:43
Spring Boot实战之Rest接口开发及数据库基本操作
本文源码下载:
http://download.csdn.net/detail/sun_t89/9576427
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/springlearnspring.datasource.username = rootspring.datasource.password = rootspring.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 strategyspring.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;@NotNullprivate 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 {@Autowiredprivate 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;}}
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、在方法名中添加查询字符串参考
- Spring Boot实战之Rest接口开发及数据库基本操作
- Spring Boot实战之Rest接口开发及数据库基本操作
- STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
- STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
- Spring Boot链接数据库操作及配置
- spring boot(3)-Rest风格接口
- spring boot(3)-Rest风格接口
- Swagger+Spring开发Rest接口
- Spring + Dubbo 开发分布式REST服务实战
- Spring Boot实战之入门
- Spring Boot实战之单元测试
- Spring Boot实战之单元测试
- Spring Boot实战之Maven
- spring boot实战之JSP
- Spring Boot实战之单元测试
- spring boot学习笔记(三):controller用法及数据库操作
- spring boot + activiti-rest 做接口服务屏蔽authentication
- spring boot rest接口自动生成文档(包含swagger)
- FreeSwitch LUA Briding two calls with retry带重试次数的两个呼叫的桥接
- CircleImageView ------圆形图片封装类
- java 读写锁
- Java实现链表反转
- 字符串转换
- Spring Boot实战之Rest接口开发及数据库基本操作
- ActiveMQ有支持两种事务
- java之小数位截取
- 指针与引用,宏与预处理,define与tpyedef
- Android源码学习之浅析SystemServer脉络
- 洛谷 P1969 [NOIP2013 D2T1] 积木大赛
- android studio for android learning (十七) Toast使用详解
- Android学习路线总结,绝对干货
- hdu 2044