1、mapper
package com.dao;
import com.dao.impl.commMapperImpl;
import com.pojo.Dade1;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.jdbc.SQL;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
import java.util.Map;
public interface commMapper{
@Select("${sql}")
List<Map> query(@Param("sql")String sql);
@InsertProvider(type = commMapperImpl.class,method="insert")
void install(@Param("data")Map dade);
}
2、定时执行
package com;
import com.dao.commMapper;
import com.pojo.Dade1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
@EnableScheduling
@Component
public class SingleThreadScheduledTask {
@Autowired
private commMapper commMapper;
@Scheduled(fixedRate = 2000)
public void doTask(){
try {
Date day=new Date();
SimpleDateFormat validdate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.print(",定时任务执行中..."+validdate.format(day)+"\t\n");
System.out.print(commMapper.query("select * from dade1"));
Map<String,String> map = new HashMap();
map.put("dade","222");
map.put("dade33","22662");
//数据
Map map2 = new HashMap();
map2.put("data",map);//保存的数据
map2.put("table","dade1");//表
map2.put("name",table("dade1"));//字段
commMapper.install(map2);
}catch (Exception e){
}
}
/**
* 获得表字段
* */
public List table(String table){
//获得表字段TABLE_SCHEMA库(sqlserver是另外一个,TABLE_NAME表,COLUMN_NAME字段)
//commMapper.query("select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='dade1';");
List<Map> list = commMapper.query("select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='"+table+"'");
//字段组装成数组
List name = new ArrayList();
for (int i = 0; i < list.size(); i++) {
name.add(list.get(i).get("COLUMN_NAME"));
}
//System.out.print(table+"88888");
return name;
}
}
3、实现commMapper的install插入方法
package com.dao.impl;
import org.apache.ibatis.jdbc.SQL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class commMapperImpl{
/**
* 单条插入
* */
public String insert(Map<String,Map> para){
Map<String,Object> map = para.get("data");
System.out.print("打印啦"+map);
Map<String,String> data = (Map<String, String>) map.get("data");//数据
String table = (String) map.get("table");//数据库表
List name = (List) map.get("name");//数据库表字段
SQL sql = new SQL(); //SQL语句对象,所在包:org.apache.ibatis.jdbc.SQL
sql.INSERT_INTO(""+table);
//System.out.print("表"+table+"字段"+name);
for(String key : data.keySet()){
//String value = data.get(key);
//System.out.println(key+" "+value);
//判断map字段在数据库表中是否存在该字段
if(name.contains(""+key)){
//存在,不为nill插入
if(data.get(key) != null){ //判断blogId属性是否有值
sql.VALUES(""+key,data.get(key));
}
}
}
//System.out.print(sql.toString());
return sql.toString();
}
}