接口开发-restful

数据库表设计

 1 --员工表  2 create table Employee  3 (  4     id  NUMBER  primary key,  5     employeeID NUMBER not null,  6     employeeName VARCHAR2(100) not null,  7     employeeSex VARCHAR2(100) not null,  8     employeeEmail VARCHAR2(100) not null,  9     employeeDepartmentID VARCHAR2(10) not null 10 ) 11 create unique index Employee_UINDEX on Employee (employeeID)  ---员工id唯一 12  15 drop sequence Sequence_Employee_id 16 --创建一个序列 17 create  sequence Sequence_Employee_id 18     start with 1  --起始值是1000 19     increment by 1   --每次增量1 20     maxvalue 99999    --最大增量9999

实体类

 1 package com.example.demo.api.restful.entity;  2   3 /**  4  * 员工主数据  5  *  6  * @author liuwenlong  7  * @create 2022-06-13 22:10:22  8  */  9 @SuppressWarnings("all") 10 public class Employee { 11  12     /** 13      * 员工ID 14      */ 15     private Integer employeeID; 16  17     /** 18      * 员工姓名 19      */ 20     private String employeeName; 21  22     /** 23      * 员工性别 24      */ 25     private String employeeSex; 26  27     /** 28      * 员工邮箱 29      */ 30     private String employeeEmail; 31  32     /** 33      * 员工部门ID 34      */ 35     private Integer employeeDepartmentID; 36  37  38     public Employee() { 39     } 40  41     public Integer getEmployeeID() { 42         return employeeID; 43     } 44  45     public void setEmployeeID(Integer employeeID) { 46         this.employeeID = employeeID; 47     } 48  49     public String getEmployeeName() { 50         return employeeName; 51     } 52  53     public void setEmployeeName(String employeeName) { 54         this.employeeName = employeeName; 55     } 56  57     public String getEmployeeSex() { 58         return employeeSex; 59     } 60  61     public void setEmployeeSex(String employeeSex) { 62         this.employeeSex = employeeSex; 63     } 64  65     public String getEmployeeEmail() { 66         return employeeEmail; 67     } 68  69     public void setEmployeeEmail(String employeeEmail) { 70         this.employeeEmail = employeeEmail; 71     } 72  73     public Integer getEmployeeDepartmentID() { 74         return employeeDepartmentID; 75     } 76  77     public void setEmployeeDepartmentID(Integer employeeDepartmentID) { 78         this.employeeDepartmentID = employeeDepartmentID; 79     } 80  81     @Override 82     public String toString() { 83         return "Employee{" + 84                 "employeeID=" + employeeID + 85                 ", employeeName='" + employeeName + ''' + 86                 ", employeeSex='" + employeeSex + ''' + 87                 ", employeeEmail='" + employeeEmail + ''' + 88                 ", employeeDepartmentID=" + employeeDepartmentID + 89                 '}'; 90     } 91 }

控制类Controller

 1 package com.example.demo.api.restful.controller;  2   3 import com.example.demo.api.restful.service.IRestfulService;  4 import net.sf.json.JSONObject;  5 import org.springframework.beans.factory.annotation.Autowired;  6 import org.springframework.web.bind.annotation.*;  7   8   9 /** 10  * restful接口 11  * 12  * @author liuwenlong 13  * @create 2022-06-13 14:49:56 14  */ 15 @RestController 16 @SuppressWarnings("all") 17 @RequestMapping(value = "/restful/api") 18 public class RestfulController { 19  20     @Autowired 21     IRestfulService iRestfulService; 22  23     /** 24      * 员工主数据接入接口 25      * 26      * @param body 27      * @return 28      */ 29     @RequestMapping(value = "employeeMasterData", method = RequestMethod.POST) 30     public JSONObject employeeMasterData(@RequestBody JSONObject body) { 31         return iRestfulService.employeeMasterData(body); 32     } 33 }

接口(Service)

 1 package com.example.demo.api.restful.service;  2   3 import net.sf.json.JSONObject;  4 import org.springframework.web.bind.annotation.RequestBody;  5   6 /**  7  * @author liuwenlong  8  * @create 2022-06-13 22:47:37  9  */ 10 @SuppressWarnings("all") 11 public interface IRestfulService { 12     /** 13      * 人员主数据接口接入 14      * 15      * @param body 16      * @return 17      */ 18     JSONObject employeeMasterData(@RequestBody JSONObject body); 19 }

业务实现层(Impl)

  1 package com.example.demo.api.restful.service.impl;   2    3 import com.example.demo.api.restful.dao.IRestfulMapper;   4 import com.example.demo.api.restful.entity.Employee;   5 import com.example.demo.api.entity.HEAD;   6 import com.example.demo.api.entity.LIST;   7 import com.example.demo.api.entity.Response;   8 import com.example.demo.api.restful.service.IRestfulService;   9 import net.sf.json.JSONArray;  10 import net.sf.json.JSONObject;  11 import org.springframework.beans.factory.annotation.Autowired;  12 import org.springframework.stereotype.Service;  13   14 import java.util.LinkedList;  15 import java.util.List;  16   17 /**  18  * @author liuwenlong  19  * @create 2022-06-13 22:48:52  20  */  21 @SuppressWarnings("all")  22 @Service  23 public class RestfulServiceImpl implements IRestfulService {  24   25     @Autowired  26     IRestfulMapper iRestfulMapper;  27   28   29     /**  30      * 人员主数据接口接入  31      *  32      * @param body  33      * @return  34      */  35     @Override  36     public JSONObject employeeMasterData(JSONObject body) {  37         try {  38             //JSONObject jsonObject = JSONObject.fromObject(body);//将json字符串转为json对象  39             String BIZTRANSACTIONID = body.getJSONObject("HEAD").getString("BIZTRANSACTIONID");  40             JSONArray requestList = body.getJSONArray("LIST");//得到上游请求来的LIST数组  41             List<Employee> employeeList = new LinkedList<>();//存放得到的人员信息  42   43             int successCount = 0;//多少条数据  44             int result = 0;//成功失败标识(默认)  45             String comments = "成功";//成功标识(默认)  46             String errorInfo = "";//失败标识  47             String errorCode = "";//失败代码  48   49             //组装反馈HEAD  50             HEAD responseHead = new HEAD();  51             //组装反馈LIST  52             List<LIST> responseLIST = new LinkedList<>();  53   54               55             for (int i = 0; i < requestList.size(); i++) {  56                 int employeeID = Integer.parseInt(requestList.getJSONObject(i).getString("employeeID"));  57                 String employeeName = requestList.getJSONObject(i).getString("employeeName");  58                 String employeeSex = requestList.getJSONObject(i).getString("employeeSex");  59                 String employeeEmail = requestList.getJSONObject(i).getString("employeeEmail");  60                 int employeeDepartmentID = Integer.parseInt(requestList.getJSONObject(i).getString("employeeDepartmentID"));  61                 Employee employee = new Employee();  62                 employee.setEmployeeID(employeeID);  63                 employee.setEmployeeName(employeeName);  64                 employee.setEmployeeSex(employeeSex);  65                 employee.setEmployeeEmail(employeeEmail);  66                 employee.setEmployeeDepartmentID(employeeDepartmentID);  67   68                 LIST errorList = new LIST();  69                 try {  70                     int insertDBresult = iRestfulMapper.employeeMasterData(employee);//插入数据库  71                     successCount++;  72                     errorList.setId(employeeID);  73                     errorList.setMessage("success");  74                 } catch (Exception e) {  75                     System.out.println(e.getMessage());  76                     errorInfo = "错误详情请参考list里对应错误提示";  77                     result = 1;  78                     errorList.setId(employeeID);  79                     errorList.setMessage(e.getCause().toString());  80                 }  81                 responseLIST.add(errorList);  82             }  83   84             if (result == 1) {  85                 result = 1;  86                 comments = "接收失败";  87             }  88   89             //组装反馈HEAD  90             responseHead.setBIZTRANSACTIONID(BIZTRANSACTIONID);  91             responseHead.setRESULT(result);  92             responseHead.setCOMMENTS(comments);  93             responseHead.setERRORCODE(errorCode);  94             responseHead.setERRORINFO(errorInfo);  95             responseHead.setSUCCESSCOUNT(successCount);  96   97             //组装完整反馈信息  98             Response responseInfo = new Response();  99             responseInfo.setHEAD(responseHead); 100             responseInfo.setLIST(responseLIST); 101  102             return JSONObject.fromObject(responseInfo); 103  104         } catch (Exception e) { 105             String error = "{"error":"" + e.getMessage().replace(""", "\"") + ""}"; 106             return JSONObject.fromObject(error); 107         } 108     } 109 }

DAO

 1 package com.example.demo.api.restful.dao;  2   3 import com.example.demo.api.restful.entity.Employee;  4   5 /**  6  * @author liuwenlong  7  * @create 2022-06-13 22:54:11  8  */  9 @SuppressWarnings("all") 10 public interface IRestfulMapper { 11  12     /** 13      * 人员主数据接口接入 14      * 15      * @param body 16      * @return 17      */ 18     int employeeMasterData(Employee employee); 19 }

Mapper

 1 <?xml version="1.0" encoding="UTF-8"?>  2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  3 <mapper namespace="com.example.demo.api.restful.dao.IRestfulMapper">  4   5     <!--人员主数据接入-->  6     <insert id="employeeMasterData" parameterType="com.example.demo.api.restful.entity.Employee">  7      insert into Employee(id,employeeID,employeeName,employeeSex,employeeEmail,employeeDepartmentID)  8      values(  9               Sequence_Employee_id.NEXTVAL, 10               #{employeeID}, 11               #{employeeName}, 12               #{employeeSex}, 13               #{employeeEmail}, 14               #{employeeDepartmentID} 15          ) 16       </insert> 17 </mapper>

数据库连接

1 #连接Oracle数据库 2 spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver 3 spring.datasource.url=jdbc:oracle:thin:@localhost:1521/orcl 4 spring.datasource.username=system 5 spring.datasource.password=123456 6  7 #加载Mybatis的xml 在:resources下 8 mybatis.mapper-locations=classpath*:/com/example/demo/api/restful/dao/*.xml

请求参数说明

1 接口名称:人员主数据接入接口 2 请求地址:http://localhost:8001/restful/api/employeeMasterData 3 请求方式:post 4 传输类型:application/json

请求报文示例

 1 {  2     "HEAD": {  3         "BIZTRANSACTIONID": "PMS_ES_001_20210304110203",  4         "COUNT": "1",  5         "CONSUMER": "ES",  6         "SRVLEVEL": "1",  7         "ACCOUNT": "",  8         "PASSWORD": "",  9         "TRANSID": "" 10     }, 11     "LIST": [{ 12             "employeeID": 10001, 13             "employeeName": "张东", 14             "employeeSex": "男", 15             "employeeEmail": "zhangd@123.com", 16             "employeeDepartmentID": 1 17         }, { 18             "employeeID": 10002, 19             "employeeName": "肖瑾", 20             "employeeSex": "女", 21             "employeeEmail": "xiaoj@123.com", 22             "employeeDepartmentID": 2 23         }, { 24             "employeeID": 10003, 25             "employeeName": "孙凯凯", 26             "employeeSex": "男", 27             "employeeEmail": "sunkk@123.com", 28             "employeeDepartmentID": 3 29         } 30     ] 31 }

响应报文示例

 1 响应成功报文示例:  2 {  3     "HEAD": {  4         "BIZTRANSACTIONID": "PMS_ES_001_20210304110203",  5         "COMMENTS": "成功",  6         "ERRORCODE": "",  7         "ERRORINFO": "",  8         "RESULT": 0,  9         "SUCCESSCOUNT": 3 10     }, 11     "LIST": [ 12         { 13             "id": 11001, 14             "message": "success" 15         }, 16         { 17             "id": 11002, 18             "message": "success" 19         }, 20         { 21             "id": 11003, 22             "message": "success" 23         } 24     ] 25 } 26  27 响应失败报文样例 28  29 { 30     "HEAD": { 31         "BIZTRANSACTIONID": "PMS_ES_001_20210304110203", 32         "COMMENTS": "接收失败", 33         "ERRORCODE": "", 34         "ERRORINFO": "错误详情请参考list里对应错误提示", 35         "RESULT": 1, 36         "SUCCESSCOUNT": 1 37     }, 38     "LIST": [ 39         { 40             "id": 11004, 41             "message": "success" 42         }, 43         { 44             "id": 11002, 45             "message": "java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (SYSTEM.EMPLOYEE_UINDEX)n" 46         }, 47         { 48             "id": 11003, 49             "message": "java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (SYSTEM.EMPLOYEE_UINDEX)n" 50         } 51     ] 52 }

测试

接口开发-restful

 

发表评论

相关文章