JdbcUtil

文章目录


#JDBC封装

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.jdbc.DatabaseDriver;

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

@Slf4j
public class JdbcUtil {

    public static String DRIVER_SQLITE = "org.sqlite.JDBC";
    public static String SQLITE_URL_PREFIX = "jdbc:sqlite:";
    public static String DRIVER_MYSQL = "com.mysql.cj.jdbc.Driver";
    public static String MYSQL_URL_PREFIX = "jdbc:mysql://";

    // 定义数据库连接
    private volatile static Connection sqliteConnection;
    private volatile static Connection mysqlConnection;
    // 定义sql语句的执行对象
    private volatile static PreparedStatement sqlitePstmt;
    private volatile static PreparedStatement mysqlPstmt;
    // 定义查询返回的结果集合
    private volatile static ResultSet sqliteResultSet;
    private volatile static ResultSet mysqlResultSet;

//    static {
//        loadConfig();
//    }

    /**
     * 加载数据库配置信息
     */
//    public static void loadConfig() {
//
//        try {
//            InputStream inStream = JdbcUtil.class.getResourceAsStream("classpath:jdbc.properties");
//            Properties prop = new Properties();
//            prop.load(inStream);
//            USERNAME = prop.getProperty("jdbc.username");
//            PASSWORD = prop.getProperty("jdbc.password");
//            DRIVER = prop.getProperty("jdbc.driver");
//            URL = prop.getProperty("jdbc.url");
//        } catch (IOException e) {
//            throw new RuntimeException("读取数据库配置文件异常!", e);
//        }
//    }

//    public JdbcUtil() {
//        super();
//    }

    /**
     * 获取数据库连接
     *
     * @return
     */

    public static Connection getMysqlConnection(String ip, String name, String userName, String password) throws SQLException, ClassNotFoundException {
        Class.forName(DatabaseDriver.MYSQL.getDriverClassName());
        mysqlConnection = DriverManager.getConnection(JdbcUtil.MYSQL_URL_PREFIX+ip+":3306/"+name+"?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&connectTimeout=500&socketTimeout=60000", userName, password);
        return mysqlConnection;
    }
    public static Connection getSqliteConnection(String driver, String url) throws SQLException, ClassNotFoundException {
        Class.forName(driver);
        sqliteConnection = DriverManager.getConnection(url);
        return sqliteConnection;
    }

    /**
     * 执行更新操作
     *
     * @param sql    sql语句
     * @param params 执行参数
     * @return 执行结果
     * @throws SQLException
     */
//    public boolean updateByPreparedStatement(String sql, List<?> params)
//            throws SQLException {
//        boolean flag = false;
//        int result = -1;
//        sqlitePstmt = sqliteConnection.prepareStatement(sql);
//        int index = -1;
//        // 填充sql语句中的占位符
//        if (params != null && !params.isEmpty()) {
//            for (int i = 0; i < params.size(); i++) {
//                sqlitePstmt.setObject(index++, params.get(i));
//            }
//        }
//        result = sqlitePstmt.executeUpdate();
//        flag = result > 0 ? true : false;
//        return flag;
//    }

    /**
     * 执行查询操作
     *
     * @param sql    sql语句
     * @param params 执行参数
     * @return
     * @throws Exception
     */
    public static <T> List<T> sqliteFindResult(String sql, List<?> params, Class<T> cls) throws Exception {
        List<T> listItem = new ArrayList<T>();
        int index = 1;
        try {
            sqlitePstmt = sqliteConnection.prepareStatement(sql);
        }catch (Exception e){
            throw new Exception();
        }
        if (params != null && !params.isEmpty()) {
            for (int i = 0; i < params.size(); i++) {
                sqlitePstmt.setObject(index++, params.get(i));
            }
        }
        sqliteResultSet = sqlitePstmt.executeQuery();
        ResultSetMetaData metaData = sqliteResultSet.getMetaData();
        int cols_len = metaData.getColumnCount();
        while (sqliteResultSet.next()) {
            Map<String, Object> map = new HashMap<>();
            for (int i = 0; i < cols_len; i++) {
                String cols_name = metaData.getColumnName(i + 1);
                Object cols_value = sqliteResultSet.getObject(cols_name);
                if (cols_value == null) {
                    cols_value = "";
                }
                map.put(cols_name, cols_value);
            }
            listItem.add(MapUtil.parseMap2Object(map, cls));
        }
        return listItem;
    }

    public static <T> List<T> mysqlFindResult(String sql, List<?> params, Class<T> cls) throws Exception {
        List<T> listItem = new ArrayList<T>();
        int index = 1;
        try {
            mysqlPstmt = mysqlConnection.prepareStatement(sql);
        }catch (Exception e){
            throw new Exception();
        }
        if (params != null && !params.isEmpty()) {
            for (int i = 0; i < params.size(); i++) {
                mysqlPstmt.setObject(index++, params.get(i));
            }
        }
        mysqlResultSet = mysqlPstmt.executeQuery();
        ResultSetMetaData metaData = mysqlResultSet.getMetaData();
        int cols_len = metaData.getColumnCount();
        while (mysqlResultSet.next()) {
            Map<String, Object> map = new HashMap<>();
            for (int i = 0; i < cols_len; i++) {
                String cols_name = metaData.getColumnName(i + 1);
                Object cols_value = mysqlResultSet.getObject(cols_name);
                if (cols_value == null) {
                    cols_value = "";
                }
                map.put(cols_name, cols_value);
            }
            listItem.add(MapUtil.parseMap2Object(map, cls));
        }
        return listItem;
    }

    /**
     * 释放资源
     */
    public synchronized void releaseConn(ResultSet resultSet, PreparedStatement pstmt, Connection connection) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.Map;

@Slf4j
public class MapUtil {
    public static Object convert2Object(Class clazz, Map<String, Object[]> map) throws
            IntrospectionException, InstantiationException, IllegalAccessException {

        BeanInfo bi = Introspector.getBeanInfo(clazz);

        Object obj = clazz.newInstance();

        PropertyDescriptor[] pds = bi.getPropertyDescriptors();

        String pName;
        for (PropertyDescriptor pd : pds) {
            pName = pd.getName();
            if (map.containsKey(pName)) {
                try {
                    pd.getWriteMethod().invoke(obj, map.get(pName)[0]);
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                }
            }
        }

        return obj;
    }

    /**
     * 将Map转换为对象
     *
     * @param paramMap
     * @param cls
     * @return
     */
    public static <T> T parseMap2Object(Map<String, Object> paramMap, Class<T> cls) {
        return JSONObject.parseObject(JSONObject.toJSONString(paramMap), cls);
    }
}

    <!--                       map转对象         -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.46.sec01</version>
        </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVC是Model-View-Controller的缩写,是一种软件设计模式,用于分离应用程序的数据模型、用户界面和业务逻辑。JDBCUtil是一个用于连接数据库的工具类,它使用了Druid连接池来管理数据库连接。代码示例中的JDBCUtil类包含一个静态代码块,在静态代码块中读取了一个名为"druid.properties"的配置文件,并基于该配置文件创建了一个Druid数据源。该工具类还提供了一个静态方法getDataSource(),用于获取Druid数据源对象。引用 在MVC中,通常我们使用Service层来处理业务逻辑。引用中的UserServiceImpl类是UserService接口的实现类,它实现了UserService接口中的login()方法。在login()方法中,首先创建了一个UserDAOImpl对象,然后通过该对象调用findUser()方法来查询数据库中的用户信息。如果查询到了用户信息,会进行积分的更新,并通过调用updateUser()方法来更新用户信息。最后,如果更新成功,则返回该用户信息,否则返回null。 引用是UserService接口的定义,其中包含了一个login()方法,用于用户登录操作。 因此,从提供的代码和引用中,我们可以得出结论:MVC是一种软件设计模式,JDBCUtil是用于连接数据库的工具类,UserServiceImpl是UserService接口的实现类,UserService是一个接口,用于定义用户相关的服务方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MVC设计模式](https://blog.csdn.net/weixin_49627122/article/details/126678697)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [mvc简单实现增删改查(部分)](https://blog.csdn.net/qq_53144103/article/details/120144725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值