SpringBoot配置多数据源 springBoot代码缓存 新手爬坑

首先代码初始化到内存(加载两个不同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;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_40803329/article/details/81634516