Java(31):Java对于jdbc对数据库的封装[2]

本文介绍了如何在Java中封装JDBC数据库操作,并实现查询结果的断言验证。通过自定义的`DatabaseAssert`类,对查询结果进行断言,确保插入的数据在查询后能准确匹配。示例代码展示了数据库连接、插入数据、查询数据及断言验证的完整流程。
摘要由CSDN通过智能技术生成

JDBC数据库操作的封装方法参考(之前写的这篇文章):Java(23):Java对于jdbc对数据库的封装[1]_fen_fen的专栏-CSDN博客

下面接着说的是,加上判断查询结果是否正确。

自己写的断言方法类:
断言类:DatabaseAssert.java

package com.ciphergateway.asserts;

import org.apache.commons.lang3.StringUtils;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;


/**
 *Author:HMF
 *@create 2021-09-25
 **/
public class DatabaseAssert {

    /**
     * 断言(入参Map_input)
     * @param listMaps_out
     * @param Map_input
     * @throws SQLException
     */
    public static int assertData(List<Map<String, Object>> listMaps_out,Map<String, String> Map_input){
        int num=0;
        for (Map<String, Object> map : listMaps_out) {
            for (String key : map.keySet()) {
                boolean flag=false;
                for (String key_input : Map_input.keySet()) {
                    //key值相同再对比value值
                    if(key.equals(key_input)){
                        //System.out.println(Map_input.get(key_input));
                        flag =StringUtils.endsWith(String.valueOf(map.get(key)), String.valueOf(Map_input.get(key_input)));
                        if (flag){
                            num += 1;
                        } else {
                            System.out.println("未找到匹配" + key);
                        }
                    }
                }
            }
        }
        return num;
    }

    /**
     * 断言(入参,标识符)
     * @param listMaps_out
     * @param cipher
     * @throws SQLException
     */
    public static int assertData(List<Map<String, Object>> listMaps_out,String cipher){
        int num=0;
        for (Map<String, Object> map : listMaps_out) {
            for (String key : map.keySet()) {
            boolean flag = false;
                if (key.equals("aoe_id") == false) {
                    //System.out.println(String.valueOf(map.get(key)));
                    //System.out.println(cipher);
                    flag = StringUtils.endsWith(String.valueOf(map.get(key)), cipher);
                    if (flag) {
                        num += 1;
                    } else {
                        System.out.println("未找到匹配" + key);
                    }
                }
            }

        }
        return num;
    }

}

调用示例二

数据库db.propeties

#mysql原库

driverClass =com.mysql.jdbc.Driver

url=jdbc:mysql://10.1.1.191:3306/aoe_auto?useSSL=false&useUnicode=yes&characterEncoding=UTF-8

userName=root

passWord=123456

断言调用:

int num= DatabaseAssert.assertData(listMaps_1,Map_input);

import com.ciphergateway.utils.DataBaseUtil;
import com.ciphergateway.asserts.DatabaseAssert;
import com.ciphergateway.utils.Common;
import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.sql.*;
import java.util.*;

public class mysqlTest2{
    private static Map<String, String> Map_input = new LinkedHashMap<String,String>();

    public static void main(String[] args) throws Exception {
        //获取配置文件数据
        String filename="db.properties";
        Properties pro=Common.getProperty(filename);
        String tableName=pro.getProperty("tableName");

        //定义插入数据
        Map_input.put("aoe_aes", "吴秀梅");
        Map_input.put("aoe_sm4", "Beijing Refining Network Technology Co.Ltd.");
        Map_input.put("aoe_sm4_a", "北京市海淀区北三环西路32号楼7层0710-1");
        Map_input.put("aoe_email", "qianxiulan@yahoo.com");
        Map_input.put("aoe_phone", "15652996964");
        Map_input.put("aoe_id_card", "210302199608124861");
        Map_input.put("aoe_officer_card", "武水电字第3632734号");
        Map_input.put("aoe_passport", "BWP018930705");
        Map_input.put("aoe_general_id_card", "0299233902");//智能识别证件号
        Map_input.put("aoe_credit_card", "6212262502009182455");//银行卡号

        DataBaseUtil database=new DataBaseUtil();
        //操作数据库
        Connection conn=database.getConnection();
        //插入数据
        insertTest(conn,database,tableName);
        //查询最大的id(最后插入的数据,用来做查询条件)
        String sql="select max(aoe_id) maxId from "+tableName;
        int aoe_id=database.getMaxId(conn,sql);
        System.out.println(aoe_id);

        //查询数据
        List<Map<String, Object>> listMaps_1=selectTest(conn,database,tableName,aoe_id);
//断言
        int num= DatabaseAssert.assertData(listMaps_1,Map_input);
        if (num ==10){
            System.out.println("=====================================");
            System.out.println("插入数据后,查询,10个字段数据都正确");
        }
        else {
            System.out.println("=====================================");
            System.out.println("插入数据后,查询,10个字段部分正确"+num);
        }
     }
    /**
     * 插入数据
     * @param database
     */
    public static void insertTest(Connection conn,DataBaseUtil database,String tableName){
        List<Object> params = new ArrayList<Object>();
        //params.add("1");
        params.add(Map_input.get("aoe_aes"));   //aoe_aes
        params.add(Map_input.get("aoe_sm4")); //aoe_sm4
        params.add(Map_input.get("aoe_sm4_a"));//aoe_sm4_a
        params.add(Map_input.get("aoe_email"));//aoe_email
        params.add(Map_input.get("aoe_phone"));//aoe_phone
        params.add(Map_input.get("aoe_id_card"));//aoe_id_card
        params.add(Map_input.get("aoe_officer_card"));//aoe_officer_card
        params.add(Map_input.get("aoe_passport"));//aoe_passport
        params.add(Map_input.get("aoe_general_id_card"));//aoe_general_id_card,智能识别证件号
        params.add(Map_input.get("aoe_credit_card"));//aoe_credit_card银行卡
        System.out.println(params);
        //String sql ="insert into aoe_auto (aoe_aes, aoe_sm4) values (?,?)";   //'"+ tableName +"'
        String sql="INSERT INTO "+ tableName +" (aoe_aes, aoe_sm4, aoe_sm4_a, aoe_email, aoe_phone, aoe_id_card, aoe_officer_card, aoe_passport, aoe_general_id_card, aoe_credit_card) VALUES(?,?,?,?,?,?,?,?,?,?)";
        try {
            boolean flag = database.updateByPreparedStatement(conn,sql, params);
            System.out.println(flag);
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过主键查询
     * @param database
     * @param aoe_id
     * @throws SQLException
     */
    public static List<Map<String, Object>> selectTest(Connection conn,DataBaseUtil database,String tableName,int aoe_id) throws SQLException {
        String sql="select * from "+ tableName +" where aoe_id='"+aoe_id+"'";
        List<Map<String, Object>> listMaps = new ArrayList<Map<String, Object>>();
        listMaps=database.executeQuery(conn,sql);
        System.out.println(listMaps);
        return listMaps;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁宁可可

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值