JDBC工具类

1、log4j.properties
在src目录下创建log4j.properties文件
内容如下:

# DEBUG设置输出日志级别,由于为DEBUG,所以ERROR、WARN和INFO 级别日志信息也会显示出来
log4j.rootLogger=DEBUG,Console,RollingFile

#将日志信息输出到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern= [%-5p]-[%d{yyyy-MM-dd HH:mm:ss}] -%l -%m%n
#将日志信息输出到操作系统D盘根目录下的log.log文件中
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=D://log.log
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p %-40.40c %X{traceId}-%m%n

再次在src根目录下创建db.properties(名字不固定)
其内容为连接信息,修改时只需要修改等式右边的内容,用户名、密码以及URL

db.username=root
db.password=root
db.url=jdbc:mysql://localhost:3306/date_base?serverTimezone=UTC

创建读取连接信息工具:PropertiesTool

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertiesTool {

    private static Properties properties = new Properties();

    static {
        InputStream inputStream = PropertiesTool.class.getClassLoader().getResourceAsStream("db.properties");//将db.properties变为javaIO流对象
        try {
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
	public static String getValue(String key){
        return properties.getProperty(key);
    }
}

查询方法抽象类 IRowMapper:

import java.sql.ResultSet;

public interface IRowMapper {
    void rowMapper(ResultSet resultSet);
}

连接代码:Linked


import com.zzu.tool.PropertiesTool;
import org.apache.log4j.Logger;

import java.sql.*;

public class Linked {
    private static Logger logger = Logger.getLogger(Linked.class);

    //更新数据
    public static boolean update(String sql,Object ...params){
        Connection connection = null;
        PreparedStatement prepareStatement =null;
        try {
            connection = getConnection();
            prepareStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                prepareStatement.setObject(i + 1, params[i]);
            }
            if (prepareStatement.executeUpdate()>0){
                return true;
            }else return false;
        }catch (SQLException e) {
            logger.debug(e.getMessage(),e);
        } finally {
            close(prepareStatement,connection);
        }
        return false;
    }
   /* public static void login(String sql) {
        Connection connection = null;
        PreparedStatement pstmt = null;
        ResultSet resultSet = null;
        try {
            *//*Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/date_base?serverTimezone=UTC", "root", "root");*//*
            connection = getConnection();
            System.out.println("连接成功");
            *//*String sql = "select id,name,mobile,address from test";*//*
            Statement statement = connection.createStatement();
            ResultSet re = statement.executeQuery(sql);
            if (re.next()) {
                String id = re.getString("id");
                String name = re.getString("name");
                String mobile = re.getString("mobile");
                String address = re.getString("address");
                System.out.println(id + "," + name + "," + mobile + "," + address);
            }
        } catch ( SQLException e) {
            logger.debug(e.getMessage(),e);
        } finally {
            //7.释放资源
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    logger.debug(e.getMessage(),e);
                }
            }
            //避免空指针异常
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    logger.debug(e.getMessage(),e);
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    logger.debug(e.getMessage(),e);
                }
            }
        }
    }*/
    //查询封装,借助实现类
    public static void select(String sql, IRowMapper rowMapper) {//接口无法创建对象,所以rowMapper参数一定指向IRowMapper接口实现类对象
        Connection connection = null;
        Statement statement =null;
        ResultSet resultSet=null;
        try {
        /*    Class.forName("com.mysql.jdbc.Driver");//加载驱动
            String url = "jdbc:mysql://localhost:3306/date_base?serverTimezone=UTC";*/
            connection = getConnection();//DriverManager.getConnection(url, "root", "root");//获取连接
            statement = connection.createStatement();
            resultSet= statement.executeQuery(sql);//执行sql,将查询的数据存到ResultSet类型的变量中
            rowMapper.rowMapper(resultSet);//因为rowMapper参数指向IRowMapper接口实现类对象,所以此处将调用接口实现类中所实现的rowMapper方法  多态
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            close(resultSet,statement,connection);
        }
    }

    public static void select(String sql, IRowMapper rowMapper,Object ...params) {//接口无法创建对象,所以rowMapper参数一定指向IRowMapper接口实现类对象
        Connection connection = null;
        PreparedStatement prepareStatement =null;
        ResultSet resultSet=null;
        try{
            connection = getConnection();
            prepareStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                prepareStatement.setObject(i+1,params[i]);
            }
            resultSet = prepareStatement.executeQuery();
    /*      Class.forName("com.mysql.jdbc.Driver");//加载驱动
            String url = "jdbc:mysql://localhost:3306/date_base?serverTimezone=UTC";*//*
            connection = getConnection();//DriverManager.getConnection(url, "root", "root");//获取连接
            statement = connection.createStatement();*/

            //resultSet= statement.executeQuery(sql);//执行sql,将查询的数据存到ResultSet类型的变量中
            rowMapper.rowMapper(resultSet);//因为rowMapper参数指向IRowMapper接口实现类对象,所以此处将调用接口实现类中所实现的rowMapper方法  多态
        } catch (Exception e) {
            logger.debug(e.getMessage(),e);
        }finally {
            close(resultSet,prepareStatement,connection);
        }
    }
    public static void close(ResultSet resultSet,Statement statement,Connection connection){
        try {
            if(resultSet!=null) {
                resultSet.close();
            }
        } catch (SQLException e) {
            logger.debug(e.getMessage(),e);
        }
        try {
            if(statement!=null) {
                statement.close();
            }
        } catch (SQLException e) {
            logger.debug(e.getMessage(),e);
        }
        try {
            if(connection!=null) {
                connection.close();
            }
        } catch (SQLException e) {
            logger.debug(e.getMessage(),e);
        }
    }
    public static void close(Statement statement,Connection connection){
        try {
            if(statement!=null) {
                statement.close();
            }
        } catch (SQLException e) {
            logger.debug(e.getMessage(),e);
        }
        try {
            if(connection!=null) {
                connection.close();
            }
        } catch (SQLException e) {
            logger.debug(e.getMessage(),e);
        }
    }
    //连接
    public static Connection getConnection(){
        try {
            Class.forName("com.mysql.jdbc.Driver");//加载驱动
            String userName = PropertiesTool.getValue("db.username");
            String password = PropertiesTool.getValue("db.password");
            String url = PropertiesTool.getValue("db.url");
/*
            String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";*/
            return DriverManager.getConnection(url, userName, password);//获取连接
        } catch (Exception e) {
            logger.debug(e.getMessage(),e);
        }
        return null;
    }
    //判断是否存在
    public static boolean exist(String sql){
        Connection connection = null;
        Statement statement =null;
        ResultSet resultSet=null;
        try{
            connection = getConnection();
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            return  resultSet.next();

        }catch (Exception e) {
            logger.debug(e.getMessage(),e);
        }finally {
            close(resultSet,statement,connection);
        }
        return false;
    }

    public static boolean exist(String sql,Object ...params){
        Connection connection = null;
        PreparedStatement prepareStatement =null;
        ResultSet resultSet=null;
        try{
            connection = getConnection();
            prepareStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                prepareStatement.setObject(i+1,params[i]);
            }
            resultSet = prepareStatement.executeQuery();
            return  resultSet.next();

        }catch (Exception e) {
            logger.debug(e.getMessage(),e);
        }finally {
            close(resultSet,prepareStatement,connection);
        }
        return false;
    }
}

测试类 Test:

public class test {
    public static void main(String[] args) {

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值