(mysql)数据库相关操作

目录

一 创建表和前端动态传入字段名添加表字段--记得添加自己的数据库

二  前端传应该集合,向表添加数据

三 传入id进行查询数据 

四,编辑修改数据

五  进行数据文档下载


一 创建表和前端动态传入字段名添加表字段--记得添加自己的数据库

(一) 传入id查询表中数据

  // 根据前端传的字段和创建表
        String driver="com.mysql.cj.jdbc.Driver";
        //加载驱动
        Class.forName(driver);
        //数据库地址,本机、端口号3306、数据库名为test
        String url="jdbc:mysql:///lhbank?useUnicode=true&useCharacter=utf8&useSSL=true";
        //用户名
        String user=" ";
        //密码
        String pwd=" ";
        //连接数据库
        Connection conn= DriverManager.getConnection(url,user,pwd);
        //创建Statement对象
        Statement statement=conn.createStatement();

        //查询模板编号,用来做表名
        MdDocumentTemplateVo documentTemplateVo=mdDocumentTemplateMapper.slee(templateVo.getId());
        //从表获取名字当作创建新表的表名
        String number=documentTemplateVo.getNumber();
        //创建表
        String sql="CREATE TABLE if not exists "+ number+
                "(id varchar(256) not NULL, " +
                "mb_document_template_id varchar(256), " +
                "status varchar(256), " +
                "create_by varchar(256), " +
                "create_time  datetime, " +
                " PRIMARY KEY ( id ))";
        statement.executeUpdate(sql);
        System.out.println( statement.executeUpdate(sql));

        mdDocumentTemplateMapper.updatelist(templateVo);
        String mbDocumentTemplateId=templateVo.getId();
        //先查询表中的数据条数
        List<MbFormElements> selec=mbFormElementsMapper.selectListid(mbDocumentTemplateId);
        //表单元素
        if(mbFormElementsList!=null && mbFormElementsList.size()>selec.size() ){
           for(MbFormElements entry:mbFormElementsList){
               MbFormElements select=mbFormElementsMapper.selec(entry);
               //以名字做出判断是新增还是更新
               List<MbFormElements> name=mbFormElementsMapper.selecName(entry);
               if(select!=null){
                   mbFormElementsMapper.updateById(entry);
               }else if(select==null && name.size()==1){
                   mbFormElementsMapper.updateById(entry);
               }else {
                   String s = UUID.randomUUID().toString().replace("-", "");
                   entry.setId(s);
                   entry.setMbDocumentTemplateId(templateVo.getId());
                   String name1=entry.getElementId();
                   //添加字段这里是循环添加
                   String aqladd="ALTER TABLE "+number+" ADD  "+name1+" varchar(256)";
                   //运行sql字段添加进表
                   statement.executeUpdate(aqladd);
                   mbFormElementsMapper.insert(entry);
               }
           }
        }else {
            //如果条数小于当前前端传来的,那么说明有删除的,就先删除数据库中相应数据再新增操作
            mbFormElementsMapper.delect(mbDocumentTemplateId);
            for(MbFormElements entry:mbFormElementsList) {
                String s = UUID.randomUUID().toString().replace("-", "");
                entry.setId(s);
                entry.setMbDocumentTemplateId(templateVo.getId());
                mbFormElementsMapper.insert(entry);
            }
        }

二  前端传应该集合,向表添加数据

/**
     * 添加
     *
     * @param mbLoanInformation
     * @return
     */
    @AutoLog(value = "贷款信息-添加")
    @ApiOperation(value = "贷款信息-添加", notes = "贷款信息-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody MbLoanInformationVo mbLoanInformation) throws ClassNotFoundException, SQLException {
        List<LinkedHashMap<Object,Object>> collect = (List) mbLoanInformation.getMbList().stream().limit(10).collect(Collectors.toList());
        String column = "";
        String values = "";
        String id = UUID.randomUUID().toString().replace("-", "");
        for (LinkedHashMap<Object,Object> item : collect ) {
            String value = "";
            //根据生成的表的名字和模板的id进行数据查询
            String mbid=mbLoanInformation.getId();
            LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            String create= sysUser.getRealname();
            String date= DateUtils.formatDateTime();
            String stsua="1";
            item.put("mb_document_template_id",mbid);
            item.put("id",id);
            item.put("status",stsua);
            item.put("create_by",create);
            item.put("create_time",date);
            for(Object map_item : item.keySet()){
                System.out.println(column.indexOf(map_item.toString()));
                if(column.indexOf(map_item.toString()) == -1){
                    if(!column.equals("")){
                        column = column+","+map_item;
                    }else{
                        column = map_item.toString();
                    }
                }
                if(!value.equals("")){
                    value = value+",'"+item.get(map_item)+"'";
                }else{
                    value = "'"+item.get(map_item).toString()+"'";
                }
            }
            values =values+ "("+value+")";
        }
        System.out.println(column);
        System.out.println(values);
        // 根据前端传的字段和创建表
        String driver="com.mysql.cj.jdbc.Driver";
        //加载驱动
        Class.forName(driver);
        //数据库地址,本机、端口号3306、数据库名为test
        String url="jdbc:mysql:///lhbank?useUnicode=true&useCharacter=utf8&useSSL=true";
        //用户名
        String user=" ";
        //密码
        String pwd=" ";
        //连接数据库
        Connection conn= DriverManager.getConnection(url,user,pwd);
        //创建Statement对象
        Statement statement=conn.createStatement();
        //查询模板编号,用来查询表数据
        MdDocumentTemplate pageList = mdDocumentTemplateService.sele(mbLoanInformation.getId());
        String table=pageList.getNumber();

        String sql="insert into "+table+"("+column+") values"+values;
        System.out.println(sql);
        //执行SQL语句
        statement.executeUpdate(sql);
        //关闭流
        statement.close();
        conn.close();
        //有数据表
        for(MbLoanInformation entry:mbLoanInformation.getMdList()){
            String mbi=mbLoanInformation.getId();
            entry.setId(id);
            entry.setMbDocumentTemplateId(mbi);
            entry.setStatus("1");
            mbLoanInformationService.save(entry);
        }
        return Result.OK("添加成功!");
    }

三 传入id进行查询数据 

   /**
     * 分页列表查询
     *
     * @param mbLoanInformation
     * @return
     */
    @AutoLog(value = "贷款信息-分页列表查询")
    @ApiOperation(value = "贷款信息-分页列表查询", notes = "贷款信息-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(MbLoanInformation mbLoanInformation) throws ClassNotFoundException, SQLException {
		 String driver="com.mysql.cj.jdbc.Driver";
		 //加载驱动
		 Class.forName(driver);
		 //数据库地址,本机、端口号3306、数据库名为test
		 String url="jdbc:mysql:///lhbank?useUnicode=true&useCharacter=utf8&useSSL=true";
		 //用户名
		 String user=" ";
		 //密码
		 String pwd=" ";
		 //连接数据库
		 Connection conn= DriverManager.getConnection(url,user,pwd);
		 //创建Statement对象
		 Statement statement=conn.createStatement();
		 //查询模板编号,用来查询表数据
		 MdDocumentTemplate pageList = mdDocumentTemplateService.sele(mbLoanInformation.getId());
          String table=pageList.getNumber();
		  //根据生成的表的名字和模板的id进行数据查询
		  String id=mbLoanInformation.getId();
		  String sql="select * from "+table+" where mb_document_template_id='"+id+"'";
        System.out.println(sql);
		//执行SQL语句
		 ResultSet rs=statement.executeQuery(sql);
         //把查询到的数据存入list,传给前端
        List list = new ArrayList();
        ResultSetMetaData md = rs.getMetaData();
        int columnCount = md.getColumnCount();
        while (rs.next()) {
            Map rowData = new HashMap();
            for (int i = 1; i <= columnCount; i++) {
                rowData.put(md.getColumnName(i), rs.getObject(i));
            }
            list.add(rowData);
        }

        //关闭流
		 statement.close();
		 conn.close();
         //从本地创建的表中查询
        List<MbLoanInformation> pageLis = mbLoanInformationService.sel(mbLoanInformation);
        return Result.OK(list);
    }

四,编辑修改数据

   

    /**
     * 编辑
     *
     * @param mbLoanInformation
     * @return
     */
    @AutoLog(value = "贷款信息-编辑")
    @ApiOperation(value = "贷款信息-编辑", notes = "贷款信息-编辑")
    @PutMapping(value = "/edit")
    public Result<?> edit(@RequestBody MbLoanInformationVo mbLoanInformation) throws ClassNotFoundException, SQLException {
        List<LinkedHashMap<Object,Object>> collect = (List) mbLoanInformation.getMbList().stream().limit(10).collect(Collectors.toList());
        String column = "";
        String values = "";
        String updateString = "";
        String date= DateUtils.formatDateTime();
        for (LinkedHashMap<Object,Object> item : collect ) {
            String value = "";
            for(Object map_item : item.keySet()){
                System.out.println(column.indexOf(map_item.toString()));
                //循环获取字段名
                item.put("create_time",date);
                if(column.indexOf(map_item.toString()) == -1){
                    if(!column.equals("")){
                        column = column+","+map_item;
                    }else{
                        column = map_item.toString();
                    }
                }else{
                    String[] columns = column.split(",");
                    if(!Arrays.asList(columns).contains(map_item.toString())){
                        if (!column.equals("")) {
                            column = column + "," + map_item;
                        } else {
                            column = map_item.toString();
                        }
                    }
                }
                //进行修改的数据拼接   
                if(updateString.indexOf(map_item.toString()+"value("+map_item.toString()+")") == -1){
                    if(!updateString.equals("")){
                        updateString = updateString+","+map_item.toString()+" =values("+map_item.toString()+")";
                    }else{
                        updateString = map_item.toString()+" =values("+map_item.toString()+")".toString();
                    }
                }
                if(!value.equals("")){
                    value = value+",'"+item.get(map_item)+"'";
                }else{
                    value = "'"+item.get(map_item).toString()+"'";
                }
            }
            values =values+ "("+value+")";
        }
        System.out.println(column);
        System.out.println(values);

        // 根据前端传的字段和创建表
        String driver="com.mysql.cj.jdbc.Driver";
        //加载驱动
        Class.forName(driver);
        //数据库地址,本机、端口号3306、数据库名为test
        String url="jdbc:mysql:///lhbank?useUnicode=true&useCharacter=utf8&useSSL=true";
        //用户名
        String user=" ";
        //密码
        String pwd=" ";
        //连接数据库
        Connection conn= DriverManager.getConnection(url,user,pwd);
        //创建Statement对象
        Statement statement=conn.createStatement();
        //查询模板编号,用来查询表数据
        MdDocumentTemplate pageList = mdDocumentTemplateService.sele(mbLoanInformation.getId());
        String table=pageList.getNumber();
        //修改表数据    有进行修改    没有进行新增
        String sql="insert into "+table+"("+column+") values "+values+" on DUPLICATE KEY UPDATE "+updateString ;
        System.out.println(sql);
        //执行SQL语句
        statement.executeUpdate(sql);
        //关闭流
        statement.close();
        conn.close();
        //向本地手动创建的表添加数据进行备份
        for(MbLoanInformation entry:mbLoanInformation.getMdList()){
            entry.setCreateTime(date);
            mbLoanInformationService.updateById(entry);
        }
        return Result.OK("编辑成功!");
    }

五  进行数据文档下载

模板例子

 代码如下

    /**
     * 下载文档
     * @throws IOException
     * @return
     */
    @RequestMapping(value = "/export")
    public void replace(HttpServletResponse request, MbLoanInformationVo mbLoanInformation) throws IOException {
        //首先制作一个下载文档的模板
        String path="D:\\opt\\upFiles\\"+mbLoanInformation.getDocumentTemplate();
        //根据id去表获取要导出的值
        MbLoanInformationVo mbLoanInformation1=mbLoanInformationService.select(mbLoanInformation.getId());
        String name=mbLoanInformation1.getXm();
        String data= DateUtils.formatDate();
        String datedser=data.replace("-","");
        String outPath = "temp\\"+name+datedser+".xlsx";
        //替换的字符串 {name} -> 小明
        String phone=null;
        String idCard=null;
        String LoanTerm=null;
        String LoanAmount=null;
        String Guarantee=null;
        String Address=null;
        if(mbLoanInformation1.getSjhm()==null){
            phone="";
        }else {
            phone=mbLoanInformation1.getSjhm();
        }
        if(mbLoanInformation1.getSfz()==null){
            idCard="";
        }else {
            idCard=mbLoanInformation1.getSfz();
        }

        if(mbLoanInformation1.getJkqx()==null){
            LoanTerm="";
        }else {
            LoanTerm=mbLoanInformation1.getJkqx();
        }

        if(mbLoanInformation1.getJkje()==null){
            LoanAmount="";
        }else {
            LoanAmount=mbLoanInformation1.getJkje();
        }

        if(mbLoanInformation1.getDbr()==null){
            Guarantee="";
        }else {
            Guarantee=mbLoanInformation1.getDbr();
        }

        if(mbLoanInformation1.getDz()==null){
            Address="";
        }else {
            Address=mbLoanInformation1.getDz();
        }
        Map<String, Object> params = new HashMap<String, Object>();
        //进行值替换
        params.put("姓名", name);
        params.put("手机号码", phone);
        params.put("身份证号" ,idCard);
        params.put("借款期限", LoanTerm);
        params.put("借款金额", LoanAmount);
        params.put("担保人姓名" ,Guarantee);
        params.put("借款人地址", Address);
        replaceExcel(request,path,outPath,params);
    }

    public void replaceExcel(HttpServletResponse request,String inPath, String outPath, Map params) throws IOException, InvalidFormatException {

        InputStream is = new FileInputStream(inPath);
        Workbook wb = WorkbookFactory.create(is);

        Sheet sheet = wb.getSheetAt(0);//获取Excel的工作表sheet,下标从0开始。
        //int trLength = sheet.getLastRowNum();//获取Excel的行数
        int trLength =sheet.getPhysicalNumberOfRows();//获得总行数
        for (int i = 0; i < trLength; i++) {
            Row row = sheet.getRow(i);//获取Excel的行,下标从0开始
            if (row == null) {//若行为空,则遍历下一行
                continue;
            }
            int minColIx = row.getFirstCellNum();
            int maxColIx = row.getLastCellNum();
            for (int colIx = minColIx; colIx < maxColIx; colIx++) {
                Cell cell = row.getCell(colIx);//获取指定单元格,单元格从左到右下标从0开始
                //String runText = cell.getStringCellValue();
                String runText="";

                if (cell.getCellType().equals(CellType.STRING)){
                    runText = cell.getStringCellValue();
                }
                if (cell.getCellType().equals(CellType.NUMERIC)){
                    runText =String.valueOf(cell.getNumericCellValue());
                }
                //NUMERIC
                if (runText.equals("")){
                    continue;
                }
                System.out.println(cell);
                Matcher matcher = this.matcher(runText);
                if (matcher.find()) {
                    while ((matcher = this.matcher(runText)).find()) {
                        runText = matcher.replaceFirst(String.valueOf(params.get(matcher.group(1))));
                    }
                    cell.setCellValue(runText);
                }
            }
        }
        ServletOutputStream out = request.getOutputStream();
        wb.write(out);
        is.close();
        out.close();
    }

    /**
     * 正则匹配字符串
     * @param str
     * @return
     */
    private Matcher matcher(String str) {
        Pattern pattern = Pattern.compile("\\{(.+?)\\}", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(str);
        return matcher;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值