需求:湖南保险行业意健险承保风险预警平台数据接口

平台提供HTTPServlet服务,接受保险公司的数据请求,并在处理后返回给保险公司相应的处理结果。数据接口格式为XML数据报文,在每次接口的交易中,都包含了请求的XML数据与平台返回的XML数据。

直接操作xml格式的报文是不太方便的,最好是将xml格式的报文转换成对应的实体类,再进行操作会变得清晰方便许多。

接下来的代码是xml和实体类之间的相互转化。

 package com.sinosoft.serviceclient.bj;

 import com.sinosoft.lis.pubfun.PubFun;
import com.sinosoft.serviceclient.ServiceClient;
import com.sinosoft.tech.log.Logger;
import com.sinosoft.tech.log.LoggerFactory;
import com.sinosoft.tools.xmltools.framework.XmlConvertor;
import com.sinosoft.utility.SSRS;
import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Body_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Body_Rsp;
import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Constantly_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Head_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Head_Rsp;
import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Packet_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Packet_Rsp;
import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Body_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Constantly_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Head_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Packet_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Packet_Rsp;
import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Body_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Constantly_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Head_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Packet_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Packet_Rsp;
import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Body_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Constantly_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Head_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Packet_Req;
import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Packet_Rsp; /**
* 湖南风险预警平台-客户端
*
* @author 赵永强
*/
public class HNRiskWarningClient {
static final Logger logger = LoggerFactory.getLogger(HNRiskWarningClient.class);
// 系统当前日期
private String mCurrentDate;
// 系统当前时间
private String mCurrentTime;
// 转换器
private XmlConvertor convertor = new XmlConvertor();
// 发送请求
ServiceClient serviceClient = new ServiceClient(); public HNRiskWarningClient() {
mCurrentTime = PubFun.getCurrentTime();
mCurrentDate = PubFun.getCurrentDate();
} // 需要在select * from ldinterfaceconfig l where makeoperator='' for update;
// 表中进行配置
// 接口的环节,分为:承保环节 理赔环节 // 承保环节-保单上传
public boolean contUpload(SSRS tSSRS) { // 封装报文
ContUpload_Packet_Req tContUpload_Packet_Req = new ContUpload_Packet_Req();
ContUpload_Head_Req tContUpload_Head_Req = new ContUpload_Head_Req();
// 先给报文头附上默认值,后期需要改动再改动
tContUpload_Head_Req.setRecordType("V02");
tContUpload_Head_Req.setCompanyCode("C1");
tContUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
tContUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
tContUpload_Head_Req.setUpNumber("100"); ContUpload_Body_Req tContUpload_Body_Req = new ContUpload_Body_Req();
// 创建对象数组
ContUpload_Constantly_Req[] tUpload_Constantly_Reqs = new ContUpload_Constantly_Req[tSSRS.getMaxRow()]; for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
ContUpload_Constantly_Req tContUpload_Constantly_Req = new ContUpload_Constantly_Req();
tContUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
tContUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
tContUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 3));
tContUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 4));
tContUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 5));
tContUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 6));
tContUpload_Constantly_Req.setSellChannel(tSSRS.GetText(i, 7));
tContUpload_Constantly_Req.setStartDate(tSSRS.GetText(i, 8));
tContUpload_Constantly_Req.setEndDate(tSSRS.GetText(i, 9));
tContUpload_Constantly_Req.setEnterTime(tSSRS.GetText(i, 10));
tContUpload_Constantly_Req.setAmount(tSSRS.GetText(i, 11));
tContUpload_Constantly_Req.setAreaId(tSSRS.GetText(i, 12)); tUpload_Constantly_Reqs[i - 1] = tContUpload_Constantly_Req; } tContUpload_Body_Req.setContUpload_Constantly(tUpload_Constantly_Reqs);
tContUpload_Packet_Req.setBody(tContUpload_Body_Req);
tContUpload_Packet_Req.setHead(tContUpload_Head_Req);
// 调用webService接口发送数据,并获取返回的xml数据
byte[] requestXML = convertor.convertToXml(tContUpload_Packet_Req, "");
String mStr = new String(requestXML);
logger.info(" 承保环节-保单上传-请求报文:" + mStr);
String returnXML = "";// 接收预警平台传过来的返回报文
try {
// TODO callService方法中参数,需后续配置
returnXML = serviceClient.callService("", "", mStr);
// 对湖南预警平台返回的报文进行解析并正确和错误结果
ContUpload_Packet_Rsp tContUpload_Packet_Rsp = convertor.convertToObject(returnXML, ContUpload_Packet_Rsp.class);
if ("0".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[承保环节-保单上传]-完成,调用接口成功");
return true;
}
if ("2".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[承保环节-保单上传]-失败,调用接口失败");
return false;
} } catch (Exception e1) {
logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-保单上传]-报错了!", e1);
logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-保单上传]-结束!");
e1.printStackTrace();
return false;
}
return true; } // 承保环节-批单上传
public boolean edorUpload(SSRS tSSRS) { // 封装报文
EdorUpload_Packet_Req tEdorUpload_Packet_Req = new EdorUpload_Packet_Req();
EdorUpload_Head_Req tEdorUpload_Head_Req = new EdorUpload_Head_Req();
// 先给报文头附上默认值,后期需要改动再改动
tEdorUpload_Head_Req.setRecordType("V03");
tEdorUpload_Head_Req.setCompanyCode("C1");
tEdorUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
tEdorUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
tEdorUpload_Head_Req.setUpNumber("100"); EdorUpload_Body_Req tEdorUpload_Body_Req = new EdorUpload_Body_Req();
// 创建对象数组
EdorUpload_Constantly_Req[] tEdorUpload_Constantly_Reqs = new EdorUpload_Constantly_Req[tSSRS.getMaxRow()]; for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
EdorUpload_Constantly_Req tEdorUpload_Constantly_Req = new EdorUpload_Constantly_Req();
tEdorUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
tEdorUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
tEdorUpload_Constantly_Req.setEndorseNo(tSSRS.GetText(i, 3));
tEdorUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
tEdorUpload_Constantly_Req.setIniInsuredName(tSSRS.GetText(i, 5));
tEdorUpload_Constantly_Req.setIniInsuredIdType(tSSRS.GetText(i, 6));
tEdorUpload_Constantly_Req.setIniInsuredIdCard(tSSRS.GetText(i, 7));
tEdorUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 8));
tEdorUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 9));
tEdorUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 10));
tEdorUpload_Constantly_Req.setSellChannel(tSSRS.GetText(i, 11));
tEdorUpload_Constantly_Req.setStartDate(tSSRS.GetText(i, 12));
tEdorUpload_Constantly_Req.setEndDate(tSSRS.GetText(i, 13));
tEdorUpload_Constantly_Req.setEnterTime(tSSRS.GetText(i, 14));
tEdorUpload_Constantly_Req.setAmount(tSSRS.GetText(i, 15));
tEdorUpload_Constantly_Req.setAreaId(tSSRS.GetText(i, 16)); tEdorUpload_Constantly_Reqs[i - 1] = tEdorUpload_Constantly_Req; } tEdorUpload_Body_Req.setEdorUpload_Constantly_Req(tEdorUpload_Constantly_Reqs);
tEdorUpload_Packet_Req.setBody(tEdorUpload_Body_Req);
tEdorUpload_Packet_Req.setHead(tEdorUpload_Head_Req);
// 调用webService接口发送数据,并获取返回的xml数据
byte[] requestXML = convertor.convertToXml(tEdorUpload_Packet_Req, "");
String mStr = new String(requestXML);
logger.info(" 承保环节-批单-请求报文:" + mStr);
String returnXML = "";// 接收预警平台传过来的返回报文
try {
// TODO callService方法中参数,需后续配置
returnXML = serviceClient.callService("", "", mStr);
// 对湖南预警平台返回的报文进行解析并正确和错误结果
EdorUpload_Packet_Rsp tEdorUpload_Packet_Rsp = convertor.convertToObject(returnXML, EdorUpload_Packet_Rsp.class);
if ("0".equals(tEdorUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[承保环节-批单上传]-完成,调用接口成功");
return true;
}
if ("2".equals(tEdorUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[承保环节-批单上传]-失败,调用接口失败");
return false;
} } catch (Exception e1) {
logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-批单上传]-报错了!", e1);
logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-批单上传]-结束!");
e1.printStackTrace();
return false;
}
return true; } // 理赔部分-立案上传
public boolean registerUpload(SSRS tSSRS) { // 封装报文
RegisterUpload_Packet_Req tRegisterUpload_Packet_Req = new RegisterUpload_Packet_Req();
RegisterUpload_Head_Req tRegisterUpload_Head_Req = new RegisterUpload_Head_Req();
// 先给报文头附上默认值,后期需要改动再改动
tRegisterUpload_Head_Req.setRecordType("V04");
tRegisterUpload_Head_Req.setCompanyCode("C1");
tRegisterUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
tRegisterUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
tRegisterUpload_Head_Req.setUpNumber("100"); RegisterUpload_Body_Req tRegisterUpload_Body_Req = new RegisterUpload_Body_Req();
// 创建对象数组
RegisterUpload_Constantly_Req[] tRegisterUpload_Constantly_Reqs = new RegisterUpload_Constantly_Req[tSSRS.getMaxRow()]; for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
RegisterUpload_Constantly_Req tRegisterUpload_Constantly_Req = new RegisterUpload_Constantly_Req();
tRegisterUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
tRegisterUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
tRegisterUpload_Constantly_Req.setReportNo(tSSRS.GetText(i, 3));
tRegisterUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
tRegisterUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 5));
tRegisterUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 6));
tRegisterUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 7));
tRegisterUpload_Constantly_Req.setReportDate(tSSRS.GetText(i, 8));
tRegisterUpload_Constantly_Req.setLossDate(tSSRS.GetText(i, 9));
tRegisterUpload_Constantly_Req.setClaimDate(tSSRS.GetText(i, 10));
tRegisterUpload_Constantly_Req.setLossAmount(tSSRS.GetText(i, 11));
tRegisterUpload_Constantly_Req.setLossAddress(tSSRS.GetText(i, 12));
tRegisterUpload_Constantly_Reqs[i - 1] = tRegisterUpload_Constantly_Req; } tRegisterUpload_Body_Req.setRegisterUpload_Constantly_Req(tRegisterUpload_Constantly_Reqs);
tRegisterUpload_Packet_Req.setBody(tRegisterUpload_Body_Req);
tRegisterUpload_Packet_Req.setHead(tRegisterUpload_Head_Req);
// 调用webService接口发送数据,并获取返回的xml数据
byte[] requestXML = convertor.convertToXml(tRegisterUpload_Packet_Req, "");
String mStr = new String(requestXML);
logger.info(" 理赔环节-立案上传-请求报文:" + mStr);
String returnXML = "";// 接收预警平台传过来的返回报文
try {
// TODO callService方法中参数,需后续配置
returnXML = serviceClient.callService("", "", mStr);
// 对湖南预警平台返回的报文进行解析并正确和错误结果
RegisterUpload_Packet_Rsp tRegisterUpload_Packet_Rsp = convertor.convertToObject(returnXML, RegisterUpload_Packet_Rsp.class);
if ("0".equals(tRegisterUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[理赔环节-立案上传]-完成,调用接口成功");
return true;
}
if ("2".equals(tRegisterUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[理赔环节-立案上传]-失败,调用接口失败");
return false;
}
} catch (Exception e1) {
logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-立案上传]-报错了!", e1);
logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-立案上传]-结束!");
e1.printStackTrace();
return false;
}
return true;
} // 理赔部分-结案上传
public boolean settleUpload(SSRS tSSRS) {
// 封装报文
SettleUpload_Packet_Req tSettleUpload_Packet_Req = new SettleUpload_Packet_Req();
SettleUpload_Head_Req tSettleUpload_Head_Req = new SettleUpload_Head_Req();
// 先给报文头附上默认值,后期需要改动再改动
tSettleUpload_Head_Req.setRecordType("V05");
tSettleUpload_Head_Req.setCompanyCode("C1");
// tSettleUpload_Head_Req.setUptime("2016-12-19 10:47:50");
tSettleUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
tSettleUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
tSettleUpload_Head_Req.setUpNumber("100"); SettleUpload_Body_Req tSettleUpload_Body_Req = new SettleUpload_Body_Req();
// 创建对象数组
SettleUpload_Constantly_Req[] tSettleUpload_Constantly_Reqs = new SettleUpload_Constantly_Req[tSSRS.getMaxRow()]; for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
SettleUpload_Constantly_Req tSettleUpload_Constantly_Req = new SettleUpload_Constantly_Req();
tSettleUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
tSettleUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
tSettleUpload_Constantly_Req.setReportNo(tSSRS.GetText(i, 3));
tSettleUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
tSettleUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 5));
tSettleUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 6));
tSettleUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 7));
tSettleUpload_Constantly_Req.setEndCaseDate(tSSRS.GetText(i, 8));
tSettleUpload_Constantly_Req.setPayAmount(tSSRS.GetText(i, 9)); tSettleUpload_Constantly_Reqs[i - 1] = tSettleUpload_Constantly_Req; } tSettleUpload_Body_Req.setSettleUpload_Constantly_Req(tSettleUpload_Constantly_Reqs);
tSettleUpload_Packet_Req.setBody(tSettleUpload_Body_Req);
tSettleUpload_Packet_Req.setHead(tSettleUpload_Head_Req);
// 调用webService接口发送数据,并获取返回的xml数据
byte[] requestXML = convertor.convertToXml(tSettleUpload_Packet_Req, "");
String mStr = new String(requestXML);
logger.info(" 理赔环节-结案上传-请求报文:" + mStr);
String returnXML = "";// 接收预警平台传过来的返回报文
try {
// TODO callService方法中参数,需后续配置
returnXML = serviceClient.callService("", "", mStr);
SettleUpload_Packet_Rsp tSettleUpload_Packet_Rsp = convertor.convertToObject(returnXML, SettleUpload_Packet_Rsp.class);
if ("0".equals(tSettleUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[理赔环节-结案上传]-完成,调用接口成功");
return true;
}
if ("2".equals(tSettleUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[理赔环节-结案上传]-失败,调用接口失败");
return false;
}
} catch (Exception e1) {
logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-结案上传]-报错了!", e1);
logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-结案上传]-结束!");
e1.printStackTrace();
return false;
}
return true;
} /**
* 测试方法
*
* @param args
*/
public static void main(String[] args) {
// HNRiskWarningClient hnRiskWarningClient=new HNRiskWarningClient();
// InsureQuery_Packet_Req req=new InsureQuery_Packet_Req();
// hnRiskWarningClient.queryInsurance(req);
XmlConvertor convertor = new XmlConvertor();
ContUpload_Packet_Rsp tContUpload_Packet_Rsp = new ContUpload_Packet_Rsp();
ContUpload_Body_Rsp tUpload_Body_Rsp = new ContUpload_Body_Rsp();
ContUpload_Head_Rsp tUpload_Head_Rsp = new ContUpload_Head_Rsp();
tUpload_Head_Rsp.setErrorNumber("2");
tUpload_Head_Rsp.setUpNumber("100");
tUpload_Head_Rsp.setRecordType("V02");
tContUpload_Packet_Rsp.setBody(tUpload_Body_Rsp);
tContUpload_Packet_Rsp.setHead(tUpload_Head_Rsp);
byte[] convertToXml = convertor.convertToXml(tContUpload_Packet_Rsp, "gbk");
String str = new String(convertToXml);
System.out.println("请求参数:" + str);
tContUpload_Packet_Rsp = convertor.convertToObject(str, ContUpload_Packet_Rsp.class);
if ("0".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[承保环节-保单上传]-完成,调用接口成功"); }
if ("2".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
logger.info("推送数据-[承保环节-保单上传]-失败,调用接口失败");
}
String currentTime = PubFun.getCurrentTime();
System.out.println("currentTime:" + currentTime);
} }

接口中的xml报文和实体类的之间转换的更多相关文章

  1. XML文件与实体类的互相转换

    XML文件与实体类的互相转换 一.将XML文件反序列化为实体类对象 1. 通常程序的配置信息都保存在程序或者网站的专门的配置文件中(App.config/web.config).但是现在为了演示XML ...

  2. XML格式与实体类的转换

    背景 本人头一回写博客,请大家多多关照.通过读取XML文件获取用户管理权限,其中涉及三部分: 1.XML文件的生成: 2.XML文件的读取: 3.XML文件的保存: 如何做 第一步:自己先将XML文件 ...

  3. .net 实体类与json转换(.net自带类库实现)更新

    上一篇文章中写到在.net中实体类跟json格式的相互转换,今天在做具体转换时候,发现之前版本的jsonhelp对于日期类型的转换不全面.之前版本的jsonhelp中从实体类转换成json格式时候,将 ...

  4. .net 实体类与json转换(.net自带类库实现)

    注意要点. 1.jsonhelp编写时候添加的引用.System.Runtime.Serialization.Json; 2.实体类需声明为public jsonhelp代码: using Syste ...

  5. 复杂xml格式报文和实体类之间的转化

    pom.xml中引入如下依赖: <dependency> <groupId>org.eclipse.persistence</groupId> <artifa ...

  6. Mybatis Generator生成Mybatis Dao接口层*Mapper.xml以及对应实体类

    [前言] 使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件,Mybatis-Generator的作用就是充当了一个代码生成器的角色,使用代码生成器不仅可以简化我 ...

  7. 自动将String类型的XML解析成实体类

    package com.mooc.freemarker2dto; public class BaseDto { } package com.mooc.freemarker2dto; public cl ...

  8. generatorConfig.xml自动生成实体类,dao和xml

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration ...

  9. 利用Xml架构生成实体访问类

    由xml生成xsd及实体类   xmldataset工具 使用VS2005工具XSD.exe(SDK/v2.0/Bin/xsd.exe)自动生成实体类: xsd /c /namespace:myCom ...

随机推荐

  1. seaborn做横向条形图

    数据格式如下 这里选择fold值最大的前20个作图进行展示 代码如下 import seaborn as sns import pandas as pd import numpy as np impo ...

  2. LeetCode 506. 相对名次(Relative Ranks) 39

    506. 相对名次 506. Relative Ranks 题目描述 给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌.前三名运动员将会被分别授予"金牌",&qu ...

  3. SpringBoot整合AbstractRoutingDataSource实现读写分离

    在配置数据源时候,已经把主库和从库的数据源配置到DynamicDataSource里了 利用AbstractRoutingDataSource实现动态切换数据源,可以通过注解或者根据方法名前缀切换要使 ...

  4. win10 远程连接怎么设置快捷方式

    在桌面空白处右键,选择新建快捷方式,然后输入命令:C:\windows\system32\mstsc.exe,点击下一步,然后输入快捷方式名称:远程连接,点击确定即可.

  5. STL源码剖析——序列式容器#2 List

    list就是链表的实现,链表是什么,我就不再解释了.list的好处就是每次插入或删除一个元素,都是常数的时空复杂度.但遍历或访问就需要O(n)的时间. List本身其实不难理解,难点在于某些功能函数的 ...

  6. Appium移动端测试--搭建测试环境

    目录 文章目录如下 安装Android Studio及Android SDK 更改VDM默认存储路径 通过npm安装Appium Server 启动Appium GUI模式 Appium连接会话 Ap ...

  7. Latex局部字体大小设置

    tex 设置字体大小命令由小到大依次为: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge \ ...

  8. Debian 下忘记root密码的特殊修改方式

    当系统开机进入 grub页面时,在启动条目上按下键盘的 e 进入编辑 找到 linux 开头的一行,类似下面这样 linux /boot/vmlinux-4.9.0.8-amd64 root=/dev ...

  9. java之hibernate之基于外键的双向一对一关联映射

    这篇讲解 基于外键的双向一对一关联映射 1.考察如下信息,人和身份证之间是一个一对一的关系.表的设计 2.类结构 Person.java public class Person implements ...

  10. error C2338: You've instantiated std::aligned_storage<Len, Align> with an extended alignment (in other words, Align >

    报的完整错误为: error C2338: You've instantiated std::aligned_storage<Len, Align> with an extended al ...