ssm框架学习---传统使用jdbc连接数据库的问题

在使用jdbc来操作数据库时,首先要准备对应的数据库连接的jar包,使用jdbc连接数据库的一般代码如下:

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

/**
 * Created by ajin on 16-12-14.
 */
public class JdbcConnect {
    public static void main(String[] args){
        //数据库连接
        Connection connection =null;
        //预编译的Statement,使用这种预编译的statement可以提高数据库的性能,还能防止sql注入
        PreparedStatement preparedStatement =null;
        //结果集
        ResultSet resultSet =null;

        try{
            //加载数据库的驱动,这里使用mysql
            Class.forName("com.mysql.jdbc.Driver");
            //通过驱动管理器来获得数据库的连接
            connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis","root","admin");
            //定义sql语句
            String  sql="select * from userinfo where name = ?";
            //获取预处理的statement
            preparedStatement=connection.prepareStatement(sql);
            //设置占位符的参数
            preparedStatement.setString(1,"zcj");
            //向数据库发出sql进行查询,查询出结果集
            resultSet=preparedStatement.executeQuery();
            //遍历结果集
            while(resultSet.next()){
                System.out.print(resultSet.getString("id"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //释放资源,注意倒着释放
            if(resultSet!=null){
                try{
                    resultSet.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(preparedStatement!=null){
                try{
                    preparedStatement.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }

            if(connection!=null){
                try{
                    connection.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}
使用这种方式存在的问题:

(1)数据库连接,使用时建立连接,不使用就释放,对数据连接释放频繁,造成数据库资源浪费,影响性能   

解决办法:数据库连接池

(2)sql语句硬编码,不利于sql语句修改的维护,   设想:将sql语句配置到xml文件中,sql变化,不需要重新编译java代码

(3)设置参数硬编码,设想,将sql语句占位符和参数全部配置到xml中

(4)从resultSet中比那里结果集数据,存在硬编码  设想,将查询的结果集自动映射为java对象

(5)对程序员来讲,更加关心的是sql语句编写和参数设置这部分内容,连接的建立和释放并不需要每次都关心, 设想:程序员可以更多的关注sql语句编写和参数设置问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值