数据库表设计
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 null10 )11 create unique index Employee_UINDEX on Employee (employeeID) ---员工id唯一12 15 drop sequence Sequence_Employee_id16 --创建一个序列17 create sequence Sequence_Employee_id18 start with 1 --起始值是100019 increment by 1 --每次增量120 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 * 员工ID14 */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 * 员工部门ID34 */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 @Override82 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 liuwenlong13 * @create 2022-06-13 14:49:5614 */15 @RestController16 @SuppressWarnings("all")17 @RequestMapping(value = "/restful/api")18 public class RestfulController {19 20 @Autowired21 IRestfulService iRestfulService;22 23 /**24 * 员工主数据接入接口25 *26 * @param body27 * @return28 */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 body16 * @return17 */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 body16 * @return17 */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.OracleDriver3 spring.datasource.url=jdbc:oracle:thin:@localhost:1521/orcl4 spring.datasource.username=system5 spring.datasource.password=1234566 7 #加载Mybatis的xml 在:resources下8 mybatis.mapper-locations=classpath*:/com/example/demo/api/restful/dao/*.xml
请求参数说明
1 接口名称:人员主数据接入接口2 请求地址:http://localhost:8001/restful/api/employeeMasterData3 请求方式:post4 传输类型: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": 117 }, {18 "employeeID": 10002,19 "employeeName": "肖瑾",20 "employeeSex": "女",21 "employeeEmail": "xiaoj@123.com",22 "employeeDepartmentID": 223 }, {24 "employeeID": 10003,25 "employeeName": "孙凯凯",26 "employeeSex": "男",27 "employeeEmail": "sunkk@123.com",28 "employeeDepartmentID": 329 }30 ]31 }
响应报文示例
1 响应成功报文示例: 2 { 3 "HEAD": { 4 "BIZTRANSACTIONID": "PMS_ES_001_20210304110203", 5 "COMMENTS": "成功", 6 "ERRORCODE": "", 7 "ERRORINFO": "", 8 "RESULT": 0, 9 "SUCCESSCOUNT": 310 },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": 137 },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 }
测试
