xml初始化数据库类型数据

package com.example.mimsosm.bfm.QC.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.mimsosm.FileUtil.DOMReadXmlUtils;
import com.example.mimsosm.bfm.QC.entity.Power;
import com.example.mimsosm.bfm.QC.entity.SelectInfo;
import com.example.mimsosm.bfm.QC.mapper.PowerMapper;
import com.example.mimsosm.bfm.QC.mapper.SelectInfoMapper;
import com.example.mimsosm.bfm.QC.service.PowerService;
import com.example.mimsosm.bfm.config.configService.createSelectInfoTable;
import com.example.mimsosm.common.exception.MyException;
import com.example.mimsosm.common.result.ResponseResult;
import com.example.mimsosm.conn.GlobalConfig;
import com.example.mimsosm.osm.getSystemdatetime;
import com.example.mimsosm.vo.ResultCode;
import com.example.mimsosm.vo.ResultVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


@RestController
@RequestMapping("/SelectInfo")
public class SelectInfoController {




    @Resource(name = "selectInfoMapper")
    SelectInfoMapper selectInfoMapper;

    @Resource(name = "jdbcTemplateOne")
    private JdbcTemplate jdbcTemplateOne;


    /**
     * @Description 初始化创建SelectInfo
     * @Author 苏某
     * @Date 2022/5/16
     * @return com.example.mimsmes.licUrl.result.ResponseResult
     */
    @PostConstruct
    public void createdDataDict() {
        try {

            int i = 0;

            DataSource dataSource = jdbcTemplateOne.getDataSource();
            assert dataSource != null;
            Connection connection = dataSource.getConnection();
            DatabaseMetaData metaData = connection.getMetaData();
            String[]   types   =   { "TABLE" };
            ResultSet username = metaData.getTables(null, null, "SelectInfo", types);
            if (username.next()) {
                i=1;
            }
            username.close();
            connection.close();

            if (i==0){
                createTable(jdbcTemplateOne);
            }

            initDictData();

        } catch (Exception e) {
            throw new MyException("DataDict", e);
        }
    }
    private  void createTable(JdbcTemplate jdbcTemplate){
        String sql = "CREATE TABLE dbo.SelectInfo(\n" +
                "       ID INT IDENTITY(1,1) NOT NULL,\n" +
                "       TypeFlag INT DEFAULT(0),\n" +
                "       EnglishName NVARCHAR(max) DEFAULT(''),\n" +
                "       ChineseName NVARCHAR(max) DEFAULT(''),\n" +
                "       Remark NVARCHAR(max) DEFAULT(''),\n" +
                "       SysFlag BIT DEFAULT(0),\n" +
                "       xgName NVARCHAR(max) DEFAULT(''),\n" +
                "       xgDate nvarchar(MAX) default(''),\n" +
                ")";
        jdbcTemplate.update(sql);
        jdbcTemplate.update("CREATE UNIQUE NONCLUSTERED INDEX SelectInfoIndex ON SelectInfo(ID)");
    }
    public void initDictData() {

        ArrayList<HashMap<String, String>> xml = DOMReadXmlUtils.getXML("SelectInfo.xml","book");
        ArrayList<SelectInfo> dataDictsList = new ArrayList<>();
        if ( xml.size()<=0){
            return;
        }
        //组装DataDict对象
        for (int i = 0; i < xml.size(); i++) {
            SelectInfo dataDict = new SelectInfo();
            HashMap<String, String> hashMap = xml.get(i);
            for (String key : hashMap.keySet()) {
                if (key.equals("TypeFlag")){
                    dataDict.setTypeFlag(Integer.valueOf(hashMap.get(key)));
                }
                if (key.equals("EnglishName")){
                    dataDict.setEnglishName(hashMap.get(key));
                }
                if (key.equals("ChineseName")){
                    dataDict.setChineseName(hashMap.get(key));
                }
                if (key.equals("Remark")){
                    dataDict.setRemark(hashMap.get(key));
                }
                if (key.equals("SysFlag")){
                    dataDict.setSysFlag(Integer.valueOf(hashMap.get(key)));
                }

            }
            dataDictsList.add(dataDict);
        }
        //新增数据
        ResponseResult responseResult = initDictDatas(dataDictsList);
        responseResult.getStatus();
    }
    public ResponseResult initDictDatas(List<SelectInfo> DictList) {
        // 修改人
        String xgName =  "";
        // 修改时间
        String xgTime = getSystemdatetime.getSystemdatetime();
        Integer integer=0;
        for (SelectInfo dictInfo : DictList) {
            if (!"".equals(dictInfo.getTypeFlag()) && !"".equals(dictInfo.getEnglishName()) && !"".equals(dictInfo.getChineseName())
                    && dictInfo.getTypeFlag() != null && dictInfo.getEnglishName() != null && dictInfo.getChineseName() != null) {
                QueryWrapper<SelectInfo> queryWrapper = new QueryWrapper<>();
                queryWrapper.eq("TypeFlag", dictInfo.getTypeFlag());
                queryWrapper.eq("EnglishName", dictInfo.getEnglishName());
                queryWrapper.eq("ChineseName", dictInfo.getChineseName());
                SelectInfo dict = selectInfoMapper.selectOne(queryWrapper);
                //存在跳过本次循环,进入下次循环
                if (dict != null) {
                    continue;
                }
                if (dictInfo.getRemark() == null) {
                    dictInfo.setRemark("");
                }
                dictInfo.setXgName(xgName);
                dictInfo.setXgDate(xgTime);
                //插入数据
                integer = selectInfoMapper.insert(dictInfo);
            } else {
                return new ResponseResult(ResultCode.DATA_IS_ERROR.getCode(), ResultCode.DATA_IS_ERROR.getMsg());
            }

        }
        if (integer>=1){
            return new ResponseResult(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), "成功" + integer);
        }else {
            return new ResponseResult(ResultCode.DATA_IS_ERROR.getCode(), ResultCode.DATA_IS_ERROR.getMsg());
        }


    }
}

SelectInfo.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--
<?xml version="1.0" encoding="UTF-8" ?>
以上内容就是xml文件的声明,
version="1.0" version表示xml的版本
encoding="utf-8"   encoding表示xml文件本身的编码
-->
<books>
    <book >
        <TypeFlag>1</TypeFlag>
        <EnglishName>SHD</EnglishName>
        <ChineseName>收货地类型</ChineseName>
        <Remark></Remark>
        <SysFlag>0</SysFlag>
    </book>
    <book >
        <TypeFlag>2</TypeFlag>
        <EnglishName>NH</EnglishName>
        <ChineseName>内盒标类别</ChineseName>
        <Remark></Remark>
        <SysFlag>0</SysFlag>
    </book>
    <book >
        <TypeFlag>3</TypeFlag>
        <EnglishName>XS</EnglishName>
        <ChineseName>鞋舌标类别</ChineseName>
        <Remark></Remark>
        <SysFlag>0</SysFlag>
    </book>


</books>

DOMReadXmlUtils

package com.example.mimsosm.FileUtil;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;

/**
 * 1. @description:
 * 2. @Author 苏某
 * String name xml文件名称 xxx.xml
 * String book xml文件对象标签 "book"
 * 3. @time: 2022/5/16 11:12
 */
public class DOMReadXmlUtils {
    public static ArrayList<HashMap<String, String>> getXML(String name, String book){
        ArrayList<HashMap<String, String>> mapArr = new ArrayList<>();
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try{
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document = null;
            try {
                FileInputStream fileInputStream = new FileInputStream(Objects.requireNonNull(DOMReadXmlUtils.class.getClassLoader().getResource(name)).getPath());
                document = db.parse(fileInputStream);
            } catch (SAXException e) {
                e.printStackTrace();
            }
            NodeList booklist = document.getElementsByTagName(book);
            for(int i = 0; i < booklist.getLength(); i++){
                HashMap<String, String> stringMAP = new HashMap<>();
                Element ele = (Element) booklist.item(i);
                NodeList childNodes= ele.getChildNodes();
                for(int j = 0; j < childNodes.getLength(); j++){
                    Node n = childNodes.item(j);
                    if(n.getNodeName() != "#text"){

                        stringMAP.put(n.getNodeName(),n.getTextContent());
                    }

                }
                mapArr.add(stringMAP);
            }
        }catch (ParserConfigurationException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
        return mapArr;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值