zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    [FJOI 2016] 神秘数
    [SHOI 2017] 寿司餐厅
    [HAOI 2012] Road
    [HAOI 2012] 容易题
    [TJOI 2018] XOR
    [NOI 2011] 阿狸的打字机
    [ZJOI 2010] 排列计数
    [TJOI2016 & HEOI2016] 字符串
    [HNOI 2011] 数学作业
    【NTT】loj#6261. 一个人的高三楼
  • 原文地址:https://www.cnblogs.com/bear7/p/12454518.html
Copyright © 2011-2022 走看看