第一步,pom.xml(因爲這個項目測試多個知識點jar包引得比較多,比較亂,根據個人需求刪除)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>xm_demo</groupId>
<artifactId>xm_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>xm_demo Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!--Spring boot版本號-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--基礎版本配置-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<fastjson.version>1.2.33</fastjson.version>
<druid.version>1.0.14</druid.version>
<commons.fileupload.version>1.3.1</commons.fileupload.version>
<thymeleaf.version>3.0.8.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
<thymeleaf-extras-springsecurity4.version>3.0.2.RELEASE</thymeleaf-extras-springsecurity4.version>
</properties>
<dependencies>
<!--谷歌json數據格式化-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
<!-- CXF webservice -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.11</version>
</dependency>
<!--thymeleaf頁面標籤-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--使用非嚴格html5格式-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
<!--spring booot web 依賴關係-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--數據庫連接配置,開始:-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<!--數據庫連接配置,結束。-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis-plus相關依賴-->
<!--<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.6</version>
</dependency>-->
<!-- <dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.4.2</version>
</dependency>-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!-- <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.1.8</version>
</dependency>-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.41</version>
</dependency>
<!--httpclient支持-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.1</version>
</dependency>
<!--json對象依賴-->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!--文件上傳下載依賴-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
<!-- xml解析 -->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.3</version>
</dependency>
<!--quartz定時任務-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
<!--打包的時候把如下資源全部打到工程中-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*</include>
<include>**/*</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
第二步,數據源配置
package com.xlt.jczb.config;
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.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* @Classname DataSourceConfig1
* @Description 主數據源配置
* @Date 2019/11/27 10:00
* @Created by xm
*/
@Configuration
// 配置主數據源mapper位置
@MapperScan(basePackages = "com.xlt.jczb.mapper", sqlSessionFactoryRef = "test1SqlSessionFactory")
public class DataSourceConfig1 {
// 將這個對象放入Spring容器中
@Bean(name = "test1DataSource")
// 表示這個數據源是默認數據源
@Primary
@ConfigurationProperties(prefix = "spring.datasource.test1")
public DataSource getDateSource1() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test1SqlSessionFactory")
@Primary
public SqlSessionFactory test1SqlSessionFactory(@Qualifier("test1DataSource") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
// 設置mybatis的xml所在位置
new PathMatchingResourcePatternResolver().getResources("classpath:/com/xlt/jczb/mapper/xml/*.xml"));
return bean.getObject();
}
@Bean("test1SqlSessionTemplate")
@Primary
public SqlSessionTemplate test1sqlsessiontemplate(
@Qualifier("test1SqlSessionFactory") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
}
}
package com.xlt.jczb.config;
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.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* @Classname DataSourceConfig2
* @Description 第二數據源配置
* @Date 2019/11/27 10:13
* @Created by xm
*/
@Configuration
@MapperScan(basePackages = "com.xlt.jczb.mapper2", sqlSessionFactoryRef = "test2SqlSessionFactory")
public class DataSourceConfig2 {
@Bean(name = "test2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.test2")
public DataSource getDateSource2() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test2SqlSessionFactory")
public SqlSessionFactory test2SqlSessionFactory(@Qualifier("test2DataSource") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath:/com/xlt/jczb/mapper2/xml/*.xml"));
return bean.getObject();
}
@Bean("test2SqlSessionTemplate")
public SqlSessionTemplate test2sqlsessiontemplate(
@Qualifier("test2SqlSessionFactory") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
}
}
第三步,持久層
主數據源
package com.xlt.jczb.mapper;
import com.xlt.jczb.entity.Xtzjgl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 系統自檢管理
*
* @date 2019-11-22 10:18:48
* @author xm
*/
@Service
public interface XtzjglMapper {
/**
* 查詢更新
* @param xtzjgl
*/
void updateTime (Xtzjgl xtzjgl);
/**
* 查詢所有
* @param
* @return
*/
List<Xtzjgl> getList();
/**
* 查詢需要消息推送列表
* @param
* @return
*/
List<Xtzjgl> sendMsgList(Xtzjgl xtzjgl);
}
xtzjglMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xlt.jczb.mapper.XtzjglMapper">
<resultMap id="BaseResultMap" type="com.xlt.jczb.entity.Xtzjgl">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="JWD" jdbcType="VARCHAR" property="jwd" />
<result column="ZBC" jdbcType="VARCHAR" property="zbc" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="TNAME" jdbcType="VARCHAR" property="tname" />
<result column="CNAME" jdbcType="VARCHAR" property="cname" />
<result column="MAXTIME" jdbcType="VARCHAR" property="maxtime" />
<result column="ZBC_NAME" jdbcType="VARCHAR" property="zbcName" />
<result column="UPDATETIME" jdbcType="VARCHAR" property="updateTime" />
</resultMap>
<!-- 數據更新 -->
<update id="updateTime" parameterType="com.xlt.jczb.entity.Xtzjgl">
update xtzjgl set updatetime= #{updateTime}, maxtime=(select max(${cname}) from ${tname} where
${zbcName}=#{zbc} ) where tName=#{tname} and cName=#{cname} and zbc=#{zbc}
</update>
<!--查詢所有配置信息-->
<select id="getList" resultMap="BaseResultMap" >
select jwd,zbc,cname,tname, zbc_name from xtzjgl
</select>
<!--查詢所有需要信息發送列表-->
<select id="sendMsgList" resultMap="BaseResultMap" parameterType="com.xlt.jczb.entity.Xtzjgl">
select jwd,zbc,tname, name from xtzjgl where MAXTIME is NULL or MAXTIME < #{updateTime}
</select>
</mapper>
第二數據源
package com.xlt.jczb.mapper2;
import com.xlt.jczb.entity.Xtzjgl;
import org.springframework.stereotype.Service;
/**
* 系統自檢管理
*
* @date 2019-11-22 10:18:48
* @author xm
*/
//@Service
public interface XtzjglMapper2 {
/**
* 查詢更新
* @param xtzjgl
*/
void updateTime(Xtzjgl xtzjgl);
/**
* 多數據源鏈接測試
* @param xtzjgl
*/
void updateTest(Xtzjgl xtzjgl);
}
xtzjglMapper2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xlt.jczb.mapper2.XtzjglMapper2">
<resultMap id="BaseResultMap" type="com.xlt.jczb.entity.Xtzjgl">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="JWD" jdbcType="VARCHAR" property="jwd" />
<result column="ZBC" jdbcType="VARCHAR" property="zbc" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="TNAME" jdbcType="VARCHAR" property="tname" />
<result column="CNAME" jdbcType="VARCHAR" property="cname" />
<result column="MAXTIME" jdbcType="VARCHAR" property="maxtime" />
<result column="ZBC_NAME" jdbcType="VARCHAR" property="zbcName" />
</resultMap>
<!-- 數據更新 -->
<update id="updateTime" parameterType="com.xlt.jczb.entity.Xtzjgl">
update xtzjgl set maxtime=(select max(${cname}) from ${tname} where
${zbcName}=#{zbc} ) where tName=#{tname} and cName=#{cname} and zbc=#{zbc}
</update>
<!--多數據源測試鏈接-->
<update id="updateTest" parameterType="com.xlt.jczb.entity.Xtzjgl">
update xtzjgl set jwd= #{jwd} where zbc= #{zbc}
</update>
</mapper>
第四步,業務層
package com.xlt.jczb.service;
import com.xlt.jczb.entity.Xtzjgl;
import java.util.List;
/**
* <p>
* 系統自檢管理業務實現
* </p>
*
* @author 徐明明
* @date 2019-11-22 10:21:22
*/
public interface XtzjglService {
/**
* 查詢更新
* @param xtzjgl
*/
void updateTime (Xtzjgl xtzjgl);
/**
* 查詢所有
* @param
* @return
*/
List<Xtzjgl> getList();
/**
* 查詢需要消息推送列表
* @param
* @return
*/
List<Xtzjgl> sendMsgList(Xtzjgl xtzjgl);
/**
* 多數據源鏈接測試
* @param xtzjgl
*/
void updateTest(Xtzjgl xtzjgl);
}
package com.xlt.jczb.service.impl;
import com.xlt.jczb.entity.Xtzjgl;
import com.xlt.jczb.mapper.XtzjglMapper;
import com.xlt.jczb.mapper2.XtzjglMapper2;
import com.xlt.jczb.service.XtzjglService;
import com.xlt.jczb.util.HttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* <p>
* 系統自檢管理
* </p>
*
* @author 徐明明
* @date 2019/07/24
*/
@Service
public class XtzjglServiceImpl implements XtzjglService {
private static final Logger log=LoggerFactory.getLogger(XtzjglServiceImpl.class);
//消息發送地址
@Value("${sendMsgUrl}")
private String sendMsgUrl;
//整備場ID
@Value("${baseInfo.zbcid}")
private String deptid;
//系統自檢持久層
@Autowired
private XtzjglMapper xtzjglMapper;
//第二數據源
@Autowired
private XtzjglMapper2 xtzjglMapper2;
/**
* 系統自檢數據更新
* @param xtzjgl
*/
@Override
public void updateTime(Xtzjgl xtzjgl) {
xtzjglMapper.updateTime(xtzjgl);
}
@Override
public List<Xtzjgl> getList() {
return xtzjglMapper.getList();
}
@Override
public List<Xtzjgl> sendMsgList(Xtzjgl xtzjgl) {
return xtzjglMapper.sendMsgList(xtzjgl);
}
@Override
public void updateTest(Xtzjgl xtzjgl) {
xtzjglMapper2.updateTest(xtzjgl);
}
}
第五步,前端控制器
package com.xlt.xfzb.controller;
import com.xlt.xfzb.entity.Xtzjgl;
import com.xlt.xfzb.service.XtzjglService;
import com.xlt.xfzb.service.impl.XtzjglServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* <p>
*
* </p>
*
* @author 徐明明
* @date 2019/07/24
*/
@Controller
@CrossOrigin
@RequestMapping("Xtzjgl")
public class XtzjglController {
@Autowired
private XtzjglService xtzjglService;
/**
* 測試接口
*
* @return
*/
@GetMapping("save")
public ResponseEntity save(Xtzjgl xtzjgl) {
System.out.println("執行了!!!!!!");
//查詢主庫數據
List<Xtzjgl> test = xtzjglService.getTest();
//更新到第二數據源
xtzjglService.updateTest(test.get(0));
return new ResponseEntity("成功!!",HttpStatus.OK);
}
}
第六步,application.yml
server:
port: 8081 # 應用程序監聽的web端口
max-http-header-size: 4048576
spring:
#應用名稱
application:
name: scheduling_xfzb
#配置文件
profiles:
active: dev
#頁面模板
thymeleaf:
mode: LEGACYHTML5
cache: false
content-type: text/html
encoding: UTF-8
#附件上傳大小限制
http:
multipart:
maxRequestSize: 100MB
maxFileSize: 100MB
max-file-size: 100MB #上傳文件的大小限定
max-request-size: 100MB #上傳請求數據的大小限定
application-dev.yml
#多數據源配置
spring:
datasource:
test1:
username: xfzb
password: xfzb
url: jdbc:oracle:thin:@127.0.0.1:1521:swwgorcl
driver-class-name: oracle.jdbc.driver.OracleDriver
druid:
initial-size: 5
test2:
username: xazb
password: xazb
url: jdbc:oracle:thin:@127.0.0.1:1521:swwgorcl
driver-class-name: oracle.jdbc.driver.OracleDriver
druid:
initial-size: 6
配置完畢,想配置更多數據源,都是相同套路,去測試一下唄!