69期-Java SE-040_JDBC-4

Posted hijackykun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了69期-Java SE-040_JDBC-4相关的知识,希望对你有一定的参考价值。

 

C3P0 的使用

1、c3p0-config.xml 名称不能自定义

```xml
<c3p0-config>
    <named-config name="testc3p0">
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</property>
        <property name="initialPoolSize">20</property>
        <property name="acquireIncrement">5</property>
        <property name="maxPoolSize">40</property>
        <property name="minPoolSize">2</property>
    </named-config>
</c3p0-config>
```

2、Java

```java
package com.southwind;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class Test2 
    public static void main(String[] args) 
        try 
            ComboPooledDataSource dataSource = new ComboPooledDataSource("testc3p0");
            Connection connection = dataSource.getConnection();
            System.out.println(connection);
         catch (SQLException e) 
            e.printStackTrace();
        
    

```



### DBUtils

DBUtils 是一个可以帮助开发者自动完成数据封装的工具,查询的结果直接返回一个对象或者一个集合。

ResultSetHandler 接口的实现类

- BeanHandler            将结果集映射成一个 POJO,适用于查询结果是一条记录的
- BeanListHandler      将结果集映射成一个 List,适用于查询结果是多条记录的
- MapHandler              将结果集映射成一个 Map,用 Map 的结构来描述数据
- MapListHandler        将结果集映射成一个 MapList,返回一个装载了 Map 对象的 List 集合

```java
package com.southwind.test;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.southwind.entity.People;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public class Test3 
    public static void main(String[] args) 
        Connection connection = null;
        try 
            ComboPooledDataSource dataSource = new ComboPooledDataSource("testc3p0");
            connection = dataSource.getConnection();
            String sql = "select * from people";
            QueryRunner queryRunner = new QueryRunner();
//            List<People> list = queryRunner.query(connection,sql,new BeanListHandler<>(People.class),1);
//            System.out.println(list);
//            People people = queryRunner.query(connection,sql, new BeanHandler<>(People.class),1);
//            System.out.println(people);
//            String sql = "select * from people";
//            People people = queryRunner.query(connection,sql,new BeanHandler<>(People.class));
//            System.out.println(people);
//            List<People> list = queryRunner.query(connection,sql,new BeanListHandler<>(People.class));
//            System.out.println(list);
//            String sql = "select * from people where id = ?";
//            Map<String,Object> map = queryRunner.query(connection,sql,new MapHandler());
//            System.out.println(map.get("id"));
//            System.out.println(map.get("name"));
//            System.out.println(map.get("money"));
            List<Map<String,Object>> list = queryRunner.query(connection,sql,new MapListHandler());
            for(Map<String,Object> map:list)
                System.out.println(map.get("id")+"-"+map.get("name")+"-"+map.get("money"));
            
         catch (SQLException e) 
            e.printStackTrace();
         finally 
            try 
                if(connection != null)
                    connection.close();
                
             catch (SQLException e) 
                e.printStackTrace();
            
        
    

```

QueryRunner 除了可以简化查询操作,同时还可以简化增删改操作。

```java
package com.southwind.test;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;

import java.sql.Connection;
import java.sql.SQLException;

public class Test4 
    public static void main(String[] args) 
        try 
            ComboPooledDataSource dataSource = new ComboPooledDataSource("testc3p0");
            Connection connection = dataSource.getConnection();
//            String sql = "insert into people(name,money) values(?,?)";
//            QueryRunner queryRunner = new QueryRunner();
//            int row = queryRunner.update(connection,sql,"小明",600);
//            System.out.println(row);

//            String sql = "update people set name = ?,money = ? where id = ?";
//            QueryRunner queryRunner = new QueryRunner();
//            int row = queryRunner.update(connection,sql,"小红",800,4);
//            System.out.println(row);

            String sql = "delete from people where id = ?";
            QueryRunner queryRunner = new QueryRunner();
            int row = queryRunner.update(connection,sql,4);
            System.out.println(row);
         catch (SQLException e) 
            e.printStackTrace();
        
    

```

技术图片

技术图片

c3p0-config.xml

<c3p0-config>
    <named-config name="testc3p0">
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</property>
        <property name="initialPoolSize">20</property>
        <property name="acquireIncrement">5</property>
        <property name="maxPoolSize">40</property>
        <property name="minPoolSize">2</property>
    </named-config>
</c3p0-config>

技术图片

People.java

package com.southwind.entity;

public class People 
    private Integer id;
    private String name;
    private Integer money;

    public Integer getId() 
        return id;
    

    public void setId(Integer id) 
        this.id = id;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    public Integer getMoney() 
        return money;
    

    public void setMoney(Integer money) 
        this.money = money;
    

    @Override
    public String toString() 
        return "People" +
                "id=" + id +
                ", name=‘" + name + ‘\\‘‘ +
                ", money=" + money +
                ‘‘;
    

    public People(Integer id, String name, Integer money) 
        this.id = id;
        this.name = name;
        this.money = money;
    

    public People() 
    

技术图片

Test.java

package com.southwind.test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

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

public class Test 
    public static void main(String[] args) 
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        try 
            dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8");
            dataSource.setUser("root");
            dataSource.setPassword("root");
            dataSource.setInitialPoolSize(20);
            dataSource.setAcquireIncrement(5);
            dataSource.setMaxPoolSize(40);
            dataSource.setMinPoolSize(2);
            Connection connection = dataSource.getConnection();
            System.out.println(connection);
         catch (PropertyVetoException e) 
            e.printStackTrace();
         catch (SQLException e)
            e.printStackTrace();
        
    

 

Test2.java

package com.southwind.test;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.southwind.entity.People;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test2 
    public static void main(String[] args) 
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try 
            ComboPooledDataSource dataSource = new ComboPooledDataSource("testc3p0");
            connection = dataSource.getConnection();
            String sql = "select * from people where id = ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1,1);
            resultSet = preparedStatement.executeQuery();
            if(resultSet.next())
                int id = resultSet.getInt(1);
                String name = resultSet.getString(2);
                int money = resultSet.getInt(3);
                People people = new People(id,name,money);
                System.out.println(people);
            
         catch (SQLException e) 
            e.printStackTrace();
         finally 
            try 
                if(connection!=null)
                    connection.close();
                
                if(preparedStatement!=null)
                    preparedStatement.close();
                
                if(resultSet!=null)
                    resultSet.close();
                
             catch (SQLException e) 
                e.printStackTrace();
            
        
    

 

Test3.java

package com.southwind.test;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.southwind.entity.People;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public class Test3 
    public static void main(String[] args) 
        Connection connection = null;
        try 
            ComboPooledDataSource dataSource = new ComboPooledDataSource("testc3p0");
            connection = dataSource.getConnection();
            String sql = "select * from people";
            QueryRunner queryRunner = new QueryRunner();
//            List<People> list = queryRunner.query(connection,sql,new BeanListHandler<>(People.class),1);
//            System.out.println(list);
//            People people = queryRunner.query(connection,sql, new BeanHandler<>(People.class),1);
//            System.out.println(people);
//            String sql = "select * from people";
//            People people = queryRunner.query(connection,sql,new BeanHandler<>(People.class));
//            System.out.println(people);
//            List<People> list = queryRunner.query(connection,sql,new BeanListHandler<>(People.class));
//            System.out.println(list);
//            String sql = "select * from people where id = ?";
//            Map<String,Object> map = queryRunner.query(connection,sql,new MapHandler());
//            System.out.println(map.get("id"));
//            System.out.println(map.get("name"));
//            System.out.println(map.get("money"));
            List<Map<String,Object>> list = queryRunner.query(connection,sql,new MapListHandler());
            for(Map<String,Object> map:list)
                System.out.println(map.get("id")+"-"+map.get("name")+"-"+map.get("money"));
            
         catch (SQLException e) 
            e.printStackTrace();
         finally 
            try 
                if(connection != null)
                    connection.close();
                
             catch (SQLException e) 
                e.printStackTrace();
            
        
    

 

Test4.java

package com.southwind.test;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;

import java.sql.Connection;
import java.sql.SQLException;

public class Test4 
    public static void main(String[] args) 
        try 
            ComboPooledDataSource dataSource = new ComboPooledDataSource("testc3p0");
            Connection connection = dataSource.getConnection();
//            String sql = "insert into people(name,money) values(?,?)";
//            QueryRunner queryRunner = new QueryRunner();
//            int row = queryRunner.update(connection,sql,"小明",600);
//            System.out.println(row);

//            String sql = "update people set name = ?,money = ? where id = ?";
//            QueryRunner queryRunner = new QueryRunner();
//            int row = queryRunner.update(connection,sql,"小红",800,4);
//            System.out.println(row);

            String sql = "delete from people where id = ?";
            QueryRunner queryRunner = new QueryRunner();
            int row = queryRunner.update(connection,sql,4);
            System.out.println(row);
         catch (SQLException e) 
            e.printStackTrace();
        
    

 

以上是关于69期-Java SE-040_JDBC-4的主要内容,如果未能解决你的问题,请参考以下文章

69期-Java SE-045_JSP-2

69期-Java SE-008_面向对象-2-001-002

69期-Java SE-007_面向对象-1-001-002

69期-Java SE-015_集合-1-001-002

69期-Java SE-044_JSP-1

69期-Java SE-002_变量运算符-001-002