1.添加驱动包
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- log4j日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<!-- mysql driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.2</version>
</dependency>
其中sqlserver驱动包从官网下载解压后,放到指定位置
2.application.properties配置
##########多数据源配置开始##########
#mis数据源1配置
spring.datasource.pit-mis.jdbc-url=jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8
spring.datasource.pit-mis.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.pit-mis.username=root
spring.datasource.pit-mis.password=密码
#mis数据源1的连接池配置
spring.datasource.pit-mis.type=com.mchange.v2.c3p0.ComboPooledDataSource
#k3数据源2配置
spring.datasource.pit-dyk3.jdbc-url=jdbc:sqlserver://ip:1433;DatabaseName=数据库名
spring.datasource.pit-dyk3.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.pit-dyk3.username=
spring.datasource.pit-dyk3.password=
#k3数据源2的连接池配置
spring.datasource.pit-dyk3.type=com.mchange.v2.c3p0.ComboPooledDataSource
#(使用DBCP2连接池,也是springboot支持的连接池之一)org.apache.commons.dbcp2.BasicDataSource
#连接池配置
spring.datasource.max-wait-millis=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.connection-properties=characterEncoding=utf8
#扫描pojo类的位置,在此处指明扫描实体类的包,在mapper中就可以不用写pojo类的全路径名了
spring.mybatis.pit-mis.type-aliases-package=pit.dao
spring.mybatis.pit-dyk3.type-aliases-package=pit.dyk3.dao
#mybatis mapper文件的位置
spring.mybatis.pit-mis=classpath:pit/mapper/*.xml
spring.mybatis.pit-dyk3=classpath:pit/mapper/sqlserver/*.xml
#mybatis.config-location=classpath:config/mybatis-config.xml
##########多数据源配置结束##########
3.将配置注入给spring
package pit.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:application.properties")
public class PropertiesConfig {
@Autowired
private Environment env;
public Environment getEnv() {
return env;
}
public void setEnv(Environment env) {
this.env = env;
}
}
4.数据源1配置
package pit.config;
import java.io.IOException;
import javax.sql.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.Autowired;
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.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@Configuration
@MapperScan(basePackages={"pit.dao"},sqlSessionFactoryRef="misSqlSessionFactory")
public class MisDatasourceConfig {
@Autowired
private Environment env;
@Bean(name="misDatasource")
@ConfigurationProperties(prefix="spring.datasource.pit-mis")
public DataSource misDataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name="misSqlSessionFactory")
public SqlSessionFactory createMisSqlSessionFactory(){
SqlSessionFactoryBean sf=new SqlSessionFactoryBean();
sf.setDataSource(misDataSource());
sf.setTypeAliasesPackage(env.getProperty("spring.mybatis.pit-mis.type-aliases-package"));
try {
sf.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(env.getProperty("spring.mybatis.pit-mis")));
} catch (IOException e) {
e.printStackTrace();
}
try {
return sf.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(createMisSqlSessionFactory());
return template;
}
@Bean(name="misTransactionManager")
@Primary
public DataSourceTransactionManager misTransactionManager(){
return new DataSourceTransactionManager(misDataSource());
}
}
5.数据源2配置
package pit.config;
import java.io.IOException;
import javax.sql.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.Autowired;
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.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@Configuration
@MapperScan(basePackages={"pit.dyk3.dao"},sqlSessionFactoryRef="dyk3SqlSessionFactory")
public class Dyk3DatasourceConfig {
@Autowired
private Environment env;
@Bean(name="dyk3Datasource")
@ConfigurationProperties(prefix="spring.datasource.pit-dyk3")
public DataSource dyk3DataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name="dyk3SqlSessionFactory")
public SqlSessionFactory createDyk3SqlSessionFactory(){
SqlSessionFactoryBean sf=new SqlSessionFactoryBean();
sf.setDataSource(dyk3DataSource());
sf.setTypeAliasesPackage(env.getProperty("spring.mybatis.pit-dyk3.type-aliases-package"));
try {
sf.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(env.getProperty("spring.mybatis.pit-dyk3")));
} catch (IOException e) {
e.printStackTrace();
}
try {
return sf.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(createDyk3SqlSessionFactory());
return template;
}
@Bean(name="dyk3TransactionManager")
@Primary
public DataSourceTransactionManager misTransactionManager(){
return new DataSourceTransactionManager(dyk3DataSource());
}
}
6.启动类取消自动datasource注入
package pit;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class Application
//extends SpringBootServletInitializer
{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
// @Override
// protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// return builder.sources(this.getClass());
// }
}
7.service调用,不同mapper自动连接不同数据库
package pit.services;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import pit.dao.Pit_companyMapper;
import pit.dao.Pit_default_rate_infoMapper;
import pit.dao.Pit_default_valuesMapper;
import pit.dao.Pit_issueMapper;
import pit.dao.Pit_issue_excelcolumnMapper;
import pit.dao.Pit_issue_recordMapper;
import pit.dao.Pit_issue_result_recordMapper;
import pit.dyk3.dao.DAYANG_SETTLEMENT_DATAMapper;
import pit.model.Pit_company;
import pit.model.Pit_default_rate_info;
import pit.model.Pit_default_values;
import pit.model.Pit_issue;
import pit.model.Pit_issue_excelcolumn;
import pit.model.Pit_issue_record;
import pit.model.Pit_issue_result_record_caculate;
import pit.sqlserver.model.DAYANG_SETTLEMENT_DATA;
@RestController
public class PitFileServices {
@Autowired
private HttpServletRequest request;
@Autowired
private HttpServletResponse response;
@Autowired
private Pit_issueMapper pitIssueMapper;
@Autowired
private Pit_issue_excelcolumnMapper pitIssueExcelColumnMapper;
@Autowired
private Pit_issue_recordMapper pitIssueRecordMapper;
@Autowired
private Pit_companyMapper pitCompanyMapper;
@Autowired
private Pit_issue_result_recordMapper pitIssueResultRecordMapper;
@Autowired
private Pit_default_valuesMapper pitDefaultValuesMapper;
@Autowired
private Pit_default_rate_infoMapper pitDefaultRateInfoMapper;
@Autowired
private DAYANG_SETTLEMENT_DATAMapper dayang_SETTLEMENT_DATAMapper;
@Transactional
@RequestMapping(method=RequestMethod.POST,value="/pitfileUpload")
public boolean pitUpload(@RequestParam("pit_file") MultipartFile file){
if(file!=null){
String year=request.getParameter("pit_year");
String month=request.getParameter("pit_month");
String company=request.getParameter("pit_company");
Pit_issue issue=new Pit_issue();
issue.setYear(Integer.parseInt(year));
issue.setMonth(Integer.parseInt(month));
issue.setCompany(Integer.parseInt(company));
//查看是否存在期数
List issueList=pitIssueMapper.selectByConditions(issue);
if(issueList.size()>0){
//如果存在,删除期数,删除本期标题,删除本期数据,删除计算结果
pitIssueResultRecordMapper.deleteByIssueCondition(issue);
pitIssueRecordMapper.deleteByIssueCondition(issue);
pitIssueExcelColumnMapper.deleteByIssueCondition(issue);
pitIssueMapper.deleteByConditions(issue);
}
//创建期数//获取期数最大值
issue.setValidity(1);
issue.setUpTimes(pitIssueMapper.selectMaxUPTimes(issue));
issue.setCreateTime(new Date());
pitIssueMapper.insertSelective(issue);
Workbook book = null;
//判断是xls还是xlsx
try {
book = new XSSFWorkbook(file.getInputStream());
} catch (Exception ex) {
try {
book = new HSSFWorkbook(file.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
//获取一共有多少sheet,遍历
//int numberOfSheets = book.getNumberOfSheets();
Sheet sheet = book.getSheetAt(0);
//获取sheet中有多少行,遍历每一行
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
int rowColumn=0;
List<Pit_issue_record> recordList=new ArrayList<Pit_issue_record>();
for (int j=0;j<physicalNumberOfRows;j++){
if (j == 0) {
//标题行
Row row=sheet.getRow(j);
rowColumn= sheet.getRow(j).getPhysicalNumberOfCells();//获得列数
for(int k=0;k<rowColumn;k++){
Cell cell=row.getCell(k);
//保存每期excel第一行
Pit_issue_excelcolumn pie=new Pit_issue_excelcolumn();
pie.setCreateIp(request.getRemoteAddr());
pie.setCreateTime(new Date());
pie.setMyindex(k);
pie.setName(cell.getStringCellValue());
pie.setPitIssue(issue.getId());
pitIssueExcelColumnMapper.insertSelective(pie);
}
}else{
//保存每期上传记录
Pit_issue_record pir=new Pit_issue_record();
Row row=sheet.getRow(j);
//获取工号
String comNum="";
Pit_default_values dvalue=new Pit_default_values();
dvalue.setObjId(1);
List<Pit_default_values> dValuesList=pitDefaultValuesMapper.selectByConditions(dvalue);
if(dValuesList.size()>0){
Pit_default_values dfaultValue=dValuesList.get(0);
String dValueName=dfaultValue.getName();
for(int k=0;k<rowColumn;k++){
Cell cell=row.getCell(k);
//查询列对应的标题表列
Pit_issue_excelcolumn pie=new Pit_issue_excelcolumn();
pie.setMyindex(k);
pie.setPitIssue(issue.getId());
List<Pit_issue_excelcolumn> pieResultList=pitIssueExcelColumnMapper.selectByConditions(pie);
Pit_issue_excelcolumn pieResult=pieResultList.get(0);
pir.setPitIssueExcelcolumnId(pieResult.getId());
pir.setPitIssueExcelcolumnName(pieResult.getName());
if(pieResult.getName().equalsIgnoreCase(dValueName)){
if(cell==null) cell=row.createCell(k);
cell.setCellType(Cell.CELL_TYPE_STRING);
comNum=cell.getStringCellValue();
break;
}
}
}
for(int k=0;k<rowColumn;k++){
Pit_issue_record pirRow=new Pit_issue_record();
Cell cell=row.getCell(k);
//保存每期上传记录
pirRow.setCreateIp(request.getRemoteAddr());
pirRow.setCreateTime(new Date());
pirRow.setPitIssue(issue.getId());
//查询列对应的标题表列
Pit_issue_excelcolumn pie=new Pit_issue_excelcolumn();
pie.setMyindex(k);
pie.setPitIssue(issue.getId());
List<Pit_issue_excelcolumn> pieResultList=pitIssueExcelColumnMapper.selectByConditions(pie);
Pit_issue_excelcolumn pieResult=pieResultList.get(0);
pirRow.setPitIssueExcelcolumnId(pieResult.getId());
pirRow.setPitIssueExcelcolumnName(pieResult.getName());
if(cell==null) cell=row.createCell(k);
cell.setCellType(Cell.CELL_TYPE_STRING);
pirRow.setValue(cell.getStringCellValue());
pirRow.setComNum(comNum);
recordList.add(pirRow);
//保存每期上传记录
//pitIssueRecordMapper.insert(pir);
}
}
if(j==physicalNumberOfRows-1){
//批量保存每期记录
pitIssueRecordMapper.insertBatch(recordList);
recordList.clear();
}else{
if(recordList.size()>0){
if(recordList.size()%500==0){
//批量保存每期记录
pitIssueRecordMapper.insertBatch(recordList);
recordList.clear();
}
}
}
}
recordList=null;
}
return true;
}
@RequestMapping(value="/selectPITIssueByConditions")
public List<Pit_issue> selectByConditions(@ModelAttribute Pit_issue issue){
List<Pit_issue> list= pitIssueMapper.selectByConditions(issue);
return list;
}
@RequestMapping(value="/selectCompanyAll")
public List<Pit_company> selectCompanyAll(){
SecurityContext securityContext=SecurityContextHolder.getContext();
System.out.println("=========="+securityContext.getAuthentication().toString());
List<Pit_company> list=pitCompanyMapper.selectAll();
return list;
}
@RequestMapping(value="/checkCompanyIssueExists")
public boolean checkCompanyIssueExists(@ModelAttribute Pit_issue issue){
List<Pit_issue> list=pitIssueMapper.selectByConditions(issue);
if(list.size()>0){
return true;
}else{
return false;
}
}
@RequestMapping(value="/downLoadPitFile")
public void downLoadPitFile(){
String year=request.getParameter("pit_year");
String month=request.getParameter("pit_month");
String company=request.getParameter("pit_company");
//查询累计应扣缴税额
Pit_issue issue=new Pit_issue();
issue.setYear(Integer.parseInt(year));
issue.setMonth(Integer.parseInt(month));
issue.setCompany(Integer.parseInt(company));
List<Pit_issue_result_record_caculate> pitIssueResultRecordlist=new ArrayList<Pit_issue_result_record_caculate>();
int monthInt=Integer.parseInt(month);
if(monthInt==1){
pitIssueResultRecordlist=pitIssueRecordMapper.selectPITResultFirstMonth(issue);
}else{
pitIssueResultRecordlist=pitIssueRecordMapper.selectPITResultAfterFirstMonth(issue);
}
//计算每行列数
int cloumnNum=0;
List<Pit_issue_excelcolumn> pitIssueExcelcolumnlist=null;
List<Pit_issue> issueList=pitIssueMapper.selectByConditions(issue);
if(issueList.size()>0){
Pit_issue pitIssue=issueList.get(0);
Pit_issue_excelcolumn excelcolumn=new Pit_issue_excelcolumn();
excelcolumn.setPitIssue(pitIssue.getId());
pitIssueExcelcolumnlist=pitIssueExcelColumnMapper.selectByConditions(excelcolumn);
cloumnNum=pitIssueExcelcolumnlist.size();
}
//计算结果集数量
int recordSize=pitIssueResultRecordlist.size();
//创建工作簿
Workbook book = new XSSFWorkbook();
Sheet sheet =book.createSheet(year+"年"+month+"月个税计算结果");
//计算行数,创建行
int rowNum=0;
if(cloumnNum!=0){
rowNum=recordSize/cloumnNum;
}
//创建标题行
Row rowHead=sheet.createRow(0);
for(int m=0;m<cloumnNum;m++){
Pit_issue_excelcolumn excelColumn=pitIssueExcelcolumnlist.get(m);
Cell cell=rowHead.createCell(m);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(excelColumn.getName());
}
if(cloumnNum>0){
Cell cell=rowHead.createCell(cloumnNum);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue("累计应扣缴税额");
cell=rowHead.createCell(cloumnNum+1);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue("本月扣税");
}
int recordIndex=0;
for(int k=0;k<rowNum;k++){
Row rowin=sheet.createRow(k+1);
//创建列
for(int n=0;n<cloumnNum;n++){
if(n==cloumnNum-1){
Pit_issue_result_record_caculate record=pitIssueResultRecordlist.get(recordIndex);
Cell cellin=rowin.createCell(n);
cellin.setCellType(Cell.CELL_TYPE_STRING);
cellin.setCellValue(record.getValue());
//计算累计应扣缴税额
cellin=rowin.createCell(n+1);
cellin.setCellType(Cell.CELL_TYPE_NUMERIC);
if(record.getValue()!=null){
Double value=Double.parseDouble(record.getJiaoshuie_value());
if(value<0){
cellin.setCellValue(0);
}else{
cellin.setCellValue(record.getJiaoshuie_value());
}
}else{
cellin.setCellValue("");
}
//计算本月扣税
cellin=rowin.createCell(n+2);
cellin.setCellType(Cell.CELL_TYPE_NUMERIC);
String koushuistr=record.getBenyuekoushui_value();
if(koushuistr==null) koushuistr="0.0";
BigDecimal monthKoushuiB = new BigDecimal(koushuistr);
cellin.setCellValue(monthKoushuiB.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
recordIndex++;
}else{
Pit_issue_result_record_caculate record=pitIssueResultRecordlist.get(recordIndex);
Cell cellin=rowin.createCell(n);
cellin.setCellType(Cell.CELL_TYPE_STRING);
cellin.setCellValue(record.getValue());
recordIndex++;
}
}
}
//下载excel
OutputStream ops=null;
try {
response.setHeader("Content-disposition", "attachment; filename="+year+"年"+month+"月个税.xlsx");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
ops=response.getOutputStream();
book.write(ops);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ops.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public Double caculateLeijikoushui(int month,Map<String,Object> map){
map.put("month", month);
if(month==1){
Pit_issue_record comRecord=pitIssueRecordMapper.selectPITResultByComnum(map);
Double monthLeijiYingkou=Double.parseDouble(comRecord.getValue());
map.put("rangeValue", monthLeijiYingkou);
Pit_default_rate_info pitRateInfo=pitDefaultRateInfoMapper.selectByRangeCondition(map);
if(pitRateInfo==null){
return 0.0;
}else{
Double monthValue=(monthLeijiYingkou*pitRateInfo.getTaxRate()-pitRateInfo.getQuickCaculateDeduction());
return monthValue;
}
}else{
Pit_issue_record comRecord=pitIssueRecordMapper.selectPITResultByComnum(map);
Double monthLeijiYingkou=Double.parseDouble(comRecord.getValue());
map.put("rangeValue", monthLeijiYingkou);
Pit_default_rate_info pitRateInfo=pitDefaultRateInfoMapper.selectByRangeCondition(map);
if(pitRateInfo==null){
return 0.0;
}else{
Double monthValue=(monthLeijiYingkou*pitRateInfo.getTaxRate()-pitRateInfo.getQuickCaculateDeduction());
map.put("month", month-1);
Pit_issue_record comRecord1=pitIssueRecordMapper.selectPITResultByComnum(map);
Double monthLeijiYingkou1=Double.parseDouble(comRecord1.getValue());
map.put("rangeValue", monthLeijiYingkou1);
Pit_default_rate_info pitRateInfo1=pitDefaultRateInfoMapper.selectByRangeCondition(map);
Double monthValue1=(monthLeijiYingkou1*pitRateInfo1.getTaxRate()-pitRateInfo1.getQuickCaculateDeduction());
return monthValue-monthValue1;
}
}
}
public int digui(int n){
if(n==0){
return 0;
}
int temp=(2*n-1)+digui(n-1);
System.out.println(temp);
return temp;
}
public static void main(String[] args) {
PitFileServices a=new PitFileServices();
int b=a.digui(3);
int c=a.digui(2);
System.out.println(b+";"+c);
}
}
附录:完整pom
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>HJ</groupId>
<artifactId>PIT</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>PIT Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<dependencies>
<!-- Add typical dependencies for a web application -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<!-- <exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion> -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- spring security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- cas -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-cas</artifactId>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- log4j日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<!-- mysql driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!--添加servlet-api的依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<!-- Package as an executable jar -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
<configuration>
<configurationFile>src/main/resources/config/mybatis-config-sqlserver.xml</configurationFile>
</configuration>
</plugin>
</plugins>
<resources>
<!-- <resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource> -->
</resources>
<finalName>PIT</finalName>
</build>
</project>