首先代码初始化到内存(加载两个不同url链接下的两个库 一个是postgre库 一个是gp库)
配置文件 application.properties(要注意前缀要严格按照该模板 如driver-calss-name -不能省)
mybatis.type-aliases-package=com.thunisoft.zsjinterface
server.port:8090
spring.datasource.test1.driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.test1.jdbc-url: jdbc:log4jdbc:postgresql://172.16.33.244:5432/db_ysjgl_2.1?useUnicode=true&characterEncoding=utf-8
spring.datasource.test1.username: postgres
spring.datasource.test1.password: 123456
spring.datasource.test2.driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.test2.jdbc-url:jdbc:log4jdbc:pivotal:greenplum://172.23.21.19:5432;DatabaseName=db_jcw_zsj;language=us_english;charset=utf8
spring.datasource.test2.username: gpadmin
spring.datasource.test2.password: 123456
elasticsearch.clustername=wmcloudTest
elasticsearch.ip=172.16.32.38
elasticsearch.port=9300
代码缓存类
package com.thunisoft.zsjinterface.pojo;
import com.thunisoft.zsjinterface.dao.base.YsjDao;
import com.thunisoft.zsjinterface.dao.bzk.Bzjdao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class MyStartupRunner implements CommandLineRunner {
@Autowired
public YsjDao ysjdao;
@Autowired
public Bzjdao bzkdao;
Map<String,String> zdmcDmlx;
Map<String,String> zdzDM;
@Override
public void run(String... args) throws Exception {
List<Zsjbxx> zsjdao=ysjdao.selectGet();
List<Dm> dmdao= bzkdao.selectAll();
Code.setZsjdao(zsjdao);
Code.setDmdao(dmdao);
zdmcDmlx=new HashMap<>();
zdzDM=new HashMap<>();
for (int j = 0; j < zsjdao.size(); j++) {
zdmcDmlx.put(zsjdao.get(j).getZdmc(),zsjdao.get(j).getDmlx());
}
for(int i=0;i<dmdao.size();i++){
zdzDM.put(dmdao.get(i).getDmlx()+dmdao.get(i).getDmz(),dmdao.get(i).getMc());
}
Code.setZdmcDmlx(zdmcDmlx);
Code.setZdzDM(zdzDM);//dmlx+dmz,mc
}
}
package com.thunisoft.zsjinterface.datasource;
创建数据源1
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* Created by summer on 2016/11/25.
*/
@Configuration
@MapperScan(basePackages = "com.thunisoft.zsjinterface.dao.base", sqlSessionTemplateRef = "test1SqlSessionTemplate")
public class DataSource1Config {
@Bean(name = "test1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.test1")
@Primary
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test1SqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name = "test1TransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "test1SqlSessionTemplate")
@Primary
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
创建数据源2
package com.thunisoft.zsjinterface.datasource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* Created by summer on 2016/11/25.
*/
@Configuration
@MapperScan(basePackages = "com.thunisoft.zsjinterface.dao.bzk", sqlSessionTemplateRef = "test2SqlSessionTemplate")
public class DataSource2Config {
@Bean(name = "test2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.test2")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test2SqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name = "test2TransactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("test2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "test2SqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
配置对应的mapper 1
package com.thunisoft.zsjinterface.dao.base;
import com.thunisoft.zsjinterface.pojo.YsjPojo;
import com.thunisoft.zsjinterface.pojo.Zsjbxx;
import org.apache.ibatis.annotations.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import java.util.List;
@Mapper
public interface YsjDao {
@Select(value = "SELECT t.c_name as wbjname, m.c_name as bname FROM db_ysjgl.t_sjkjgxxb K "
+ "LEFT JOIN db_ysjgl.t_sjkbjgxxb b ON K .c_bh = b.c_sjkjgxxb_id "
+ "LEFT JOIN db_ysjgl.t_mlxxglb m ON b.c_bh=m.c_sjk_id "
+ "LEFT JOIN db_ysjgl.t_mlxxb t ON m.c_mlxxb_id=t.c_bh "
+ "WHERE b.c_bh=#{sjlybh}")
@Results({@Result(property = "WbjName", column = "wbjname"), @Result(property = "BName", column = "bname")})
public YsjPojo selectAll(@Param("sjlybh") String sjlybh);
@Select(value ="SELECT c_zdmc,c_dmlx FROM db_jcwzsj.t_zsjbxx " )
@Results({@Result(property = "zdmc", column = "c_zdmc"), @Result(property = "dmlx", column = "c_dmlx")})
public List<Zsjbxx> selectGet();
}
配置mapper2
package com.thunisoft.zsjinterface.dao.bzk;
import com.thunisoft.zsjinterface.pojo.Dm;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface Bzjdao {
@Select(value = "select n_bh_dmlx, n_dm,c_mc from db_jcxx.t_dm")
@Results({@Result(property = "dmlx", column = "n_bh_dmlx"),@Result(property = "dmz", column = "n_dm"), @Result(property = "mc", column = "c_mc")})
public List<Dm> selectAll();
}
入口类controller
package com.thunisoft.zsjinterface.controller;
import com.alibaba.fastjson.JSON;
import com.thunisoft.commons.api.ApiResult;
import com.thunisoft.zsjinterface.pojo.Result;
import com.thunisoft.zsjinterface.pojo.Sjly;
import com.thunisoft.zsjinterface.service.ZsjApiService;
import com.thunisoft.zsjinterface.util.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/v1/service")
public class ApiController {
@Autowired
ZsjApiService ZsjApiService;
@RequestMapping(value = "/zsjrybj", method = RequestMethod.GET)
public ApiResult<Map<String, String>> getes( @RequestParam(name = "xm") String xm,@RequestParam(name = "zjlx") String zjlx,@RequestParam(name = "zjhm") String zjhm){
return ZsjApiService.getRybh(xm,zjlx,zjhm);
}
@RequestMapping(value = "/SjlyList", method = RequestMethod.GET)
public ApiResult<Result> getSjLyList(@RequestParam(name = "rybh")String rybh, @RequestParam(name = "xxx")String xxx){
return ZsjApiService.getSjly(rybh,xxx);
}
}
本次项目的主要实现类(只为备份)
package com.thunisoft.zsjinterface.dao;
import com.alibaba.fastjson.JSONObject;
import com.thunisoft.zsjinterface.dao.base.YsjDao;
import com.thunisoft.zsjinterface.dao.bzk.Bzjdao;
import com.thunisoft.zsjinterface.pojo.*;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class EsDaoImpl implements EsDao{
@Autowired
YsjDao ysjdao;
@Autowired
Bzjdao bzkdao;
@Override
public List<String> getDataForParam(SearchResponse searchResponse) {
List<String> list = new ArrayList<String>();
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.hits();
for (int i = 0; i < searchHits.length; i++) {
list.add(searchHits[i].getSourceAsString());
}
return list;
}
@Override
public String getRyForParam(SearchResponse searchResponse) {
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.hits();
if(searchHits.length>1){
return null;
}
return searchHits[0].getSourceAsString();
}
@Override
public List<Sjly> getSjlyForParam(SearchResponse searchResponse) {
List<Sjly> sjlies = new ArrayList<>();
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.hits();
for (int i = 0; i < searchHits.length; i++) {
SjlyLists sjlyList = JSONObject.parseObject(searchHits[i].getSourceAsString(), SjlyLists.class);//获取每个json串转成对象
String dmmc=null;
//判断字段值为纯数字
if (EsDaoImpl.isNumeric(sjlyList.getC_ZDZ())){
//获取字段名称对应的代码类型
String dmlx = Code.getZdmcDmlx().get(sjlyList.getC_ZSJ_ZDMC());
//拼接key dmlx+dmz
String zdmcdmlx=dmlx+sjlyList.getC_ZDZ();
if (Code.getZdzDM().containsKey(zdmcdmlx)){
dmmc= Code.getZdzDM().get(zdmcdmlx);
}else {
dmmc=sjlyList.getC_ZDZ();
}
}else {
dmmc=sjlyList.getC_ZDZ();
}
String c_sjlyb = sjlyList.getC_SJLYB();
String[] split = c_sjlyb.split(";");
if(c_sjlyb.contains(";")){
for (int j=0;j<split.length;j++)
{
YsjPojo ysjPojo = ysjdao.selectAll(split[j]);//获取委办局和表
String lyxx=ysjPojo.getWbjName()+"_"+ysjPojo.getBName();
System.out.println("------"+lyxx);
Sjly sjly = new Sjly(dmmc, lyxx, sjlyList.getN_ZXD());
sjlies.add(sjly);
}
}else {
System.out.println(ysjdao.selectAll(c_sjlyb));
YsjPojo ysjPojo = ysjdao.selectAll(c_sjlyb);//获取委办局和表
String lyxx=ysjPojo.getWbjName()+"_"+ysjPojo.getBName();
Sjly sjly = new Sjly(dmmc, lyxx, sjlyList.getN_ZXD());
sjlies.add(sjly);
}
}
return sjlies;
}
//判断字符串是否为纯数字
public static boolean isNumeric(String str){
for (int i = 0; i < str.length(); i++){
System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
}
package com.thunisoft.zsjinterface.pojo; import java.util.List; import java.util.Map; public class Code { static List<Zsjbxx> zsjdao; static List<Dm> dmdao; static Map<String,String> zdmcDmlx; static Map<String,String> zdzDM; public static Map<String, String> getZdmcDmlx() { return zdmcDmlx; } public static void setZdmcDmlx(Map<String, String> zdmcDmlx) { Code.zdmcDmlx = zdmcDmlx; } public static Map<String, String> getZdzDM() { return zdzDM; } public static void setZdzDM(Map<String, String> zdzDM) { Code.zdzDM = zdzDM; } public static List<Zsjbxx> getZsjdao() { return zsjdao; } public static void setZsjdao(List<Zsjbxx> zsjdao) { Code.zsjdao = zsjdao; } public static List<Dm> getDmdao() { return dmdao; } public static void setDmdao(List<Dm> dmdao) { Code.dmdao = dmdao; } }