zoukankan      html  css  js  c++  java
  • jdbc的封装

    创建连接池

    package com.oraec.jdbcutil;

    import java.beans.PropertyVetoException;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    import com.mchange.v2.c3p0.ComboPooledDataSource;
    /**
    *链接池
    */
    public class JDBCUtil {
    // 驱动
    private final static String DRIVER_CLASS = "oracle.jdbc.OracleDriver";
    // URL
    private final static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
    // 用户名
    private final static String USER = "scott";
    // 密码
    private final static String PASSWORD = "oraec";
    private static ComboPooledDataSource datasouce;
    static {
    try {
    // 创建类连接池
    datasouce = new ComboPooledDataSource();
    // 设置加载驱动
    datasouce.setDriverClass(DRIVER_CLASS);
    // 设置URL
    datasouce.setJdbcUrl(URL);
    // 设置用户名
    datasouce.setUser(USER);
    // 设置密码
    datasouce.setPassword(PASSWORD);
    // 设置初始化连接数量
    datasouce.setInitialPoolSize(5);
    // 设置连接池每次增加连接的数量
    datasouce.setAcquireIncrement(3);
    // 设置连接池最大连接数量
    datasouce.setMaxPoolSize(50);
    // 设置连接池最小连接数量
    datasouce.setMinPoolSize(3);
    // 设置闲置连接最大存活时间 gc
    datasouce.setMaxIdleTime(200);

    } catch (PropertyVetoException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    /**
    *得到链接
    *@return
    */
    public static Connection getConnection(){
    try {
    return datasouce.getConnection();
    } catch (SQLException e) {
    e.printStackTrace();
    throw new RuntimeException();
    }
    }

    public static void main(String[] args) {
    System.out.println(getConnection());
    }
    /**
    *关闭资源
    *
    *@param rs
    *@param st
    *@param conn
    */
    public static void isClose(ResultSet rs,Statement st,Connection conn){
    if(rs!=null){
    try {
    rs.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if(st!=null){
    try {
    st.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if(conn!=null){
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }

    package com.oraec.jdbcutil;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.*;

    public class JDBCTemplate {
    //泛型 方法泛型
    /**
    * 针对同一张表的 不同条件的查询方法 users
    * Object... 作为形参 代表任意个数的任意类型参数
    */
    public List<Map<String,Object>> queryForList(String sql,Object...obj){
    List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
    Connection conn=JDBCUtil.getConnection();
    PreparedStatement ps=null;
    ResultSet rs=null;
    try {
    ps = conn.prepareStatement(sql);
    //拼接参数
    setParameters(ps, obj);
    //执行
    rs=ps.executeQuery();
    //通过结果集得到元数据 相当于得到了数据库中一个表结构
    ResultSetMetaData rsm=rs.getMetaData();
    //得到一条数据 一共有多少列
    int num=rsm.getColumnCount();
    while(rs.next()){
    // System.out.println(rs.getInt(1));
    // System.out.println(rs.getString(2));
    // System.out.println(rs.getString(3));
    // System.out.println(rs.getString(4));
    // System.out.println(rs.getString(5));
    // System.out.println(rs.getString(6));
    Map<String, Object> map=new HashMap<String, Object>();
    for (int i = 1; i <=num; i++) {
    System.out.println(rsm.getColumnLabel(i));
    //得到列名作为map的键,再通过列名获取rs结果集中的对应数据作为map的值
    map.put(rsm.getColumnLabel(i),rs.getObject(rsm.getColumnLabel(i)));
    list.add(map);
    }
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return list;
    }
    /**
    * 设置预处理参数的方法
    * @param ps
    * @param obj
    */

    public void setParameters(PreparedStatement ps,Object...obj){
    if(obj!=null){
    for (int i = 0; i < obj.length; i++) {
    try {
    ps.setObject(i+1,obj[i]);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }

    实列运用

    package com.oraec.jdbctest;

    import java.util.List;
    import java.util.Map;

    import com.oraec.jdbcutil.JDBCTemplate;

    public class Test {
    public static void main(String[] args) {
    String sql = "select * from past where name=?";
    JDBCTemplate jt = new JDBCTemplate();
    List<Map<String, Object>> list = jt.queryForList(sql, new Object[]{"asd"});
    System.out.println(list.size());
    }
    }

  • 相关阅读:
    SDOI2008 Sandy的卡片
    BZOJ2555 Substring
    CTSC2012 熟悉的文章
    递增
    丢失的牛
    【模板】点分治
    陌上花开(三维偏序)
    Holes(河鼠入洞)
    弹飞河鼠
    树状数组1
  • 原文地址:https://www.cnblogs.com/1x-zfd50/p/6379388.html
Copyright © 2011-2022 走看看