zoukankan      html  css  js  c++  java
  • JDBC2

    1.JDBC连接池

    public class JdbcTemplateDemo2 {
    
        //Junit单元测试,可以让方法独立执行
    
    
        //1. 获取JDBCTemplate对象
        private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
        /**
         * 1. 修改1号数据的 salary 为 10000
         */
        @Test
        public void test1(){
    
            //2. 定义sql
            String sql = "update emp set salary = 10000 where id = 1001";
            //3. 执行sql
            int count = template.update(sql);
            System.out.println(count);
        }
    
        /**
         * 2. 添加一条记录
         */
        @Test
        public void test2(){
            String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";
            int count = template.update(sql, 1015, "郭靖", 10);
            System.out.println(count);
    
        }
    
        /**
         * 3.删除刚才添加的记录
         */
        @Test
        public void test3(){
            String sql = "delete from emp where id = ?";
            int count = template.update(sql, 1015);
            System.out.println(count);
        }
    
        /**
         * 4.查询id为1001的记录,将其封装为Map集合
         * 注意:这个方法查询的结果集长度只能是1
         */
        @Test
        public void test4(){
            String sql = "select * from emp where id = ? or id = ?";
            Map<String, Object> map = template.queryForMap(sql, 1001,1002);
            System.out.println(map);
            //{id=1001, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}
    
        }
    
        /**
         * 5. 查询所有记录,将其封装为List
         */
        @Test
        public void test5(){
            String sql = "select * from emp";
            List<Map<String, Object>> list = template.queryForList(sql);
    
            for (Map<String, Object> stringObjectMap : list) {
                System.out.println(stringObjectMap);
            }
        }
    
        /**
         * 6. 查询所有记录,将其封装为Emp对象的List集合
         */
    
        @Test
        public void test6(){
            String sql = "select * from emp";
            List<Emp> list = template.query(sql, new RowMapper<Emp>() {
    
                @Override
                public Emp mapRow(ResultSet rs, int i) throws SQLException {
                    Emp emp = new Emp();
                    int id = rs.getInt("id");
                    String ename = rs.getString("ename");
                    int job_id = rs.getInt("job_id");
                    int mgr = rs.getInt("mgr");
                    Date joindate = rs.getDate("joindate");
                    double salary = rs.getDouble("salary");
                    double bonus = rs.getDouble("bonus");
                    int dept_id = rs.getInt("dept_id");
    
                    emp.setId(id);
                    emp.setEname(ename);
                    emp.setJob_id(job_id);
                    emp.setMgr(mgr);
                    emp.setJoindate(joindate);
                    emp.setSalary(salary);
                    emp.setBonus(bonus);
                    emp.setDept_id(dept_id);
    
                    return emp;
                }
            });
    
    
            for (Emp emp : list) {
                System.out.println(emp);
            }
        }
    
        /**
         * 6. 查询所有记录,将其封装为Emp对象的List集合
         */
    
        @Test
        public void test6_2(){
            String sql = "select * from emp";
            List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
            for (Emp emp : list) {
                System.out.println(emp);
            }
        }
    
        /**
         * 7. 查询总记录数
         */
    
        @Test
        public void test7(){
            String sql = "select count(id) from emp";
            Long total = template.queryForObject(sql, Long.class);
            System.out.println(total);
        }
    
    }
    /**
     * Druid连接池的工具类
     */
    public class JDBCUtils {
    
        //1.定义成员变量 DataSource
        private static DataSource ds ;
    
        static{
            try {
                //1.加载配置文件
                Properties pro = new Properties();
                pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                //2.获取DataSource
                ds = DruidDataSourceFactory.createDataSource(pro);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取连接
         */
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
    
        /**
         * 释放资源
         */
        public static void close(Statement stmt,Connection conn){
           /* if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
            if(conn != null){
                try {
                    conn.close();//归还连接
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }*/
    
           close(null,stmt,conn);
        }
    
    
        public static void close(ResultSet rs , Statement stmt, Connection conn){
    
    
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
    
            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
            if(conn != null){
                try {
                    conn.close();//归还连接
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 获取连接池方法
         */
    
        public static DataSource getDataSource(){
            return  ds;
        }
    
    }
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql:///db3
    username=root
    password=root
    # 初始化连接数量
    initialSize=5
    # 最大连接数
    maxActive=10
    # 最大等待时间
    maxWait=3000

    2.JDBC druid连接池

    /**
     * 使用新的工具类
     */
    public class DruidDemo2 {
    
        public static void main(String[] args) {
            /*
             * 完成添加操作:给account表添加一条记录
             */
            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                //1.获取连接
                conn = JDBCUtils.getConnection();
                //2.定义sql
                String sql = "insert into account values(null,?,?)";
                //3.获取pstmt对象
                pstmt = conn.prepareStatement(sql);
                //4.给?赋值
                pstmt.setString(1,"王五");
                pstmt.setDouble(2,3000);
                //5.执行sql
                int count = pstmt.executeUpdate();
                System.out.println(count);
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                //6. 释放资源
                JDBCUtils.close(pstmt,conn);
            }
        }
    
    }
    /**
     * Druid演示
     */
    public class DruidDemo {
        public static void main(String[] args) throws Exception {
            //1.导入jar包
            //2.定义配置文件
            //3.加载配置文件
            Properties pro = new Properties();
            InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);
            //4.获取连接池对象
            DataSource ds = DruidDataSourceFactory.createDataSource(pro);
            //5.获取连接
            Connection conn = ds.getConnection();
            System.out.println(conn);
    
        }
    }

    3.JDBC c3po连接池

    /**
     * c3p0的演示
     */
    public class C3P0Demo1 {
        public static void main(String[] args) throws SQLException {
            //1.创建数据库连接池对象
            DataSource ds  = new ComboPooledDataSource();
            //2. 获取连接对象
            Connection conn = ds.getConnection();
    
            //3. 打印
            System.out.println(conn);
    
        }
    }
    /**
     * c3p0的演示
     */
    public class C3P0Demo1 {
        public static void main(String[] args) throws SQLException {
            //1.创建数据库连接池对象
            DataSource ds  = new ComboPooledDataSource();
            //2. 获取连接对象
            Connection conn = ds.getConnection();
    
            //3. 打印
            System.out.println(conn);
    
        }
    }
    <c3p0-config>
      <!-- 使用默认的配置读取连接池对象 -->
      <default-config>
          <!--  连接参数 -->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/db4</property>
        <property name="user">root</property>
        <property name="password">root</property>
        
        <!-- 连接池参数 -->
        <!--初始化申请的连接数量-->
        <property name="initialPoolSize">5</property>
        <!--最大的连接数量-->
        <property name="maxPoolSize">10</property>
        <!--超时时间-->
        <property name="checkoutTimeout">3000</property>
      </default-config>
    
      <named-config name="otherc3p0"> 
        <!--  连接参数 -->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/db3</property>
        <property name="user">root</property>
        <property name="password">root</property>
        
        <!-- 连接池参数 -->
        <property name="initialPoolSize">5</property>
        <property name="maxPoolSize">8</property>
        <property name="checkoutTimeout">1000</property>
      </named-config>
    </c3p0-config>
  • 相关阅读:
    jquery 序列化form表单
    nginx for windows 安装
    nodejs idea 创建项目 (一)
    spring 配置 shiro rememberMe
    idea 2018 解决 双击shift 弹出 search everywhere 搜索框的方法
    redis 在windows 集群
    spring IOC控制反转和DI依赖注入
    redis 的安装
    shiro 通过jdbc连接数据库
    handlebars的用法
  • 原文地址:https://www.cnblogs.com/pengyupeng/p/11242942.html
Copyright © 2011-2022 走看看