本示例主要功能是读取XML文件的表名,和字段信息,使用MyBatis进行对数据库的读写操作。
/*加载xml文件的类,采用dom4j的方式*/
public class ConfUtil {
private static Log log = LogFactory.getLog(ConfUtil.class);
private static final String confFile = ConfUtil.class.getClassLoader()
.getResource("conf/zdry.xml").toString().substring(5);
/*Map<String, List<String>中Key为表名,value为字段名,因为Map中Key不能重复,所以需将字段名加到list中,取出后再进行处理*/
public static Map<String, List<String>> getConfigMap() { Map<String, List<String>> column = new HashMap<String, List<String>>(); Map<String, String> map = new HashMap<String,String>(); try { //载入xml文件 SAXReader saxReader = new SAXReader(); saxReader.setIgnoreComments(true); Document document = saxReader.read(new File(confFile)); //遍历table节点 Iterator<Element> itTable = document.getRootElement().elementIterator("table"); while(itTable.hasNext()){ Element eleTable = itTable.next(); String tabName = eleTable.attributeValue("name"); // 遍历column节点。 Iterator<Element> itColumn = eleTable.elementIterator("column"); ArrayList<String> al = new ArrayList<String>(); while (itColumn.hasNext()) { Element eleQualifier = itColumn.next(); String quaName = eleQualifier.elementTextTrim("name"); //将字段加到list al.add(quaName); } column.put(tabName, al);//添加Map } } catch (Exception e) { log.info("没找到zdry.xml 文件!"); } return column; }
所要读取的XML文件为ZDRY.xml
<?xml version="1.0" encoding="UTF-8"?> <tables> <table name="V_LC_WA_DS_ICP" updatetime="UpdateTime" description="互联网信息"> <!-- 地址 --> <column> <name>Address</name> </column> <column> <name>DomainName</name> </column> <column> <name>Tel</name> </column> <column> <name>Sex</name> </column> <column> <name>no</name> </column> <column> <name>Sex</name> </column> </table> <table name="sdfsd" updatetime="UpdateTime" description="互联网信息"> <!-- 地址 --> <column> <name>1</name> </column> <column> <name>2</name> </column> <column> <name>3</name> </column> <column> <name>4</name> </column> <column> <name>5</name> </column> <column> <name>6</name> </column> </table> </tables>
调用getConfigMap( ),将返回的Map进行处理,对每一个Key和value添加到一个Map中,要插入的表名只有6个字段
public void doZdryJob(String start,String end){ Map<String, List<String>> ma = ConfUtil.getConfigMap(); Set set = ma.keySet();//获取Map中所有的Key Iterator iter = set.iterator(); while (iter.hasNext()) {//是否存在下一个元素 Map<String, String> map = new HashMap<String,String>(); ma.clear(); String key = (String) iter.next(); map.put("tableName", key); map.put("column1", ma.get(key).get(0)); map.put("column2", ma.get(key).get(1)); map.put("column3", ma.get(key).get(2)); map.put("column4", ma.get(key).get(3)); map.put("column5", ma.get(key).get(4)); map.put("column6", ma.get(key).get(5)); service.updateZdry(map); } }