JDBCTemplate基本使用

用了jdbc连接池之后,我们会发现连接对象的复用性更高了,程序整体运行的性能也更高了。但是我们在做JDBC操作的时候还是比较麻烦,要定义sql,执行sql,设置参数,处理结果。

 

 

 特别是当我们要做查询操作的时候,处理结果会变得相当麻烦。我们要把数据封装成对象,然后从结果集里获取数据,然后再创建对象,给对象属性赋值。这个过程很麻烦,都是体力活。我们只希望定义sql,然后把sql执行了,体力活不希望自己做。而JDBCtemplate就能帮我们做这些体力活。

 

druid+JDBCTemplate使用步骤:

  1.导入JDBCTemplate jar包

  

JDBCTemplate依赖于数据库连接池,所以还需要druid相关的jar包或者是其他连接池jar包

如果使用的是 druid jdbcTemplate ,需要导入JDBCTemplate jar包5个+druid jar包1个 + 数据库驱动包

如果使用的是c3p0  jdbcTemplate ,需要导入JDBCTemplate jar包5个+c3p0 jar包2个 + 数据库驱动包

 

  2.创建JDBCTemplate对象。依赖于数据源DataSource

    *JdbcTemplate template = new JdbcTemplate(datasource)

  3.调用JdbcTemplate的方法来完成CRUD的操作

    *update():执行DML语句。增删改语句

    *queryForMap():查询结果将结果集封装为map集合

    *queryForList():查询结果将结果集封装为map集合

     *query():查询结果,将结果封装为JavaBean对象

    *queryForObject:查询结果,将结果封装为对象

 

示例代码如下:

  1.工具类JDBCUtils:

package cn.xj.datasource.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtils {
    //定义成员变量
    private static DataSource ds;

    static {
        try {
            //加载配置文件
            Properties pro = new Properties();
            pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //获取连接池对象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();
            }
        }
    }

    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 getDateSource(){
        return ds;
    }

}

 

   2.实现类JdbcTemplate_demo

package cn.xj.datasource.jdbctemplate;

import cn.xj.datasource.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

public class JdbcTemplate_demo {
    public static void main(String[] args) {
        //创建JDBCTemplate对象
        JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDateSource());
        //3.调用方法
        String sql = "update account set balance = 5000 where id = ?";
        int count = template.update(sql, 3);
        System.out.println(count);
    }
}

 

posted @ 2020-03-10 11:14  白熊啊  阅读(6101)  评论(1编辑  收藏  举报