zoukankan      html  css  js  c++  java
  • java 通用查询

    目录:

    package com.it.common;
    
    import com.it.utils.Account;
    import com.itheima.uitl.JDBCUtil02;
    import org.junit.Test;
    
    import javax.sql.rowset.JdbcRowSet;
    import java.sql.*;
    
    public class CommonCRUDUtil {
    
        class A implements ResultHandler<Account>{
            @Override
            public Account handler(ResultSet resultSet) {
                try {
                    while (resultSet.next()){
                        Account account = new Account();
                        String name = resultSet.getString("name");
                        int money = resultSet.getInt("money");
                        account.setMoney(money);
                        account.setName(name);
                        return account;
                    }
                }catch (SQLException e){
                    e.printStackTrace();
                }
                return null;
            }
        }
    
        //通用的查方法
        @Test
        public void testFindall(){
            Account account = findall("select * from account where id=?",new A(),6);
    
            System.out.println(account.toString());
        }
    
        public <T> T findall(String sql, ResultHandler<T> handler, Object...args){
            Connection conn = null;
            PreparedStatement ps = null;
            try {
                conn = JDBCUtil02.getConn();
                ps = conn.prepareStatement(sql);
                ParameterMetaData metaData = ps.getParameterMetaData();
                int count = metaData.getParameterCount();
                for (int i = 0; i < count; i++) {
                    ps.setObject(i+1, args[i]);
                }
                // 查询得到结果集
                ResultSet resultSet = ps.executeQuery();
                // 把得到的结果集交给调用者,让它去封装数据
                T t = (T) handler.handler(resultSet);
                return t;
    
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCUtil02.release(conn, ps);
            }
            return null;
        }
    
    
    
    
    
        // 通用的增删改方法
        @Test
        public void testUpdate(){
            updata02("insert into account values(?,?,?)",8,6000,"womengl");
        }
    
        public void update(String sql, Object...args){
            Connection conn = null;
            PreparedStatement ps = null;
            try {
                conn = JDBCUtil02.getConn();
                ps = conn.prepareStatement(sql);
                for (int i = 0; i < args.length; i++) {
                    ps.setObject(i+1, args[i]);
                }
                ps.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCUtil02.release(conn, ps);
            }
        }
    
    
        public void updata02(String sql, Object ... args){
            Connection conn = null;
            PreparedStatement ps = null;
    
            try {
                conn = JDBCUtil02.getConn();
                ps = conn.prepareStatement(sql);
    
                // 获取参数源数据对象
                ParameterMetaData metaData = ps.getParameterMetaData();
                // 获取参数的总数
                int count = metaData.getParameterCount();
                for (int i = 0; i < count; i++) {
                    ps.setObject(i+1, args[i]);
                }
                ps.executeUpdate();
    
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCUtil02.release(conn, ps);
            }
    
    
        }
    }
    
    package com.it.common;
    
    import java.sql.ResultSet;
    
    public interface ResultHandler<T> {
        // 定义了一个数据封装的规则,或者是规范
        T handler(ResultSet resultSet);
    }
    
    
    package com.itheima.uitl;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    
    import javax.sql.DataSource;
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class JDBCUtil02 {
    
        static ComboPooledDataSource dataSource = null;
    
        static{
            dataSource = new ComboPooledDataSource();
        }
    
    //    public static DataSource getDataSource(){
    //        return dataSource;
    //    }
    
        /**
         * 获取连接对象
         * @return
         * @throws SQLException
         */
        public static Connection getConn() throws SQLException{
            return dataSource.getConnection();
        }
    
        /**
         * 释放资源
         * @param conn
         * @param st
         * @param rs
         */
        public static void release(Connection conn , Statement st , ResultSet rs){
            closeRs(rs);
            closeSt(st);
            closeConn(conn);
        }
        public static void release(Connection conn , Statement st){
            closeSt(st);
            closeConn(conn);
        }
    
    
        private static void closeRs(ResultSet rs){
            try {
                if(rs != null){
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                rs = null;
            }
        }
    
        private static void closeSt(Statement st){
            try {
                if(st != null){
                    st.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                st = null;
            }
        }
    
        private static void closeConn(Connection conn){
            try {
                if(conn != null){
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                conn = null;
            }
        }
    }
    

    jdbc配置

    driverClass=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost/wzdata
    name=root
    password=root
    

    c3p0-config

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
       <!-- This is default config! -->
       <default-config>
          <property name="driverClass">com.mysql.jdbc.Driver</property>
          <property name="jdbcUrl">jdbc:mysql://localhost:3306/wzdata</property>
          <property name="user">root</property>
          <property name="password">123456</property>
    
    
          <property name="initialPoolSize">10</property>
          <property name="maxIdleTime">30</property>
          <property name="minPoolSize">30</property>
          <property name="maxPoolSize">100</property>
       </default-config>
    </c3p0-config>
    
  • 相关阅读:
    C#日期与时间
    使用IIS部署WebDAV
    永久有效,最新IntelliJ IDEA 2021.1.1激活破解教程,亲测有效
    LNC(宝元)机床的IP设置和数据采集
    KND(凯恩帝)机床的IP设置
    国密算法SM1-SM4简介
    WPF中根据数据展示不同UI控件的做法
    WPF中ListView滚动到当前行的几种方法
    WPF中对于异步返回的绑定
    .net类库名称空间冲突怎么办?
  • 原文地址:https://www.cnblogs.com/lishi-jie/p/11800439.html
Copyright © 2011-2022 走看看