mybatis学习笔记(1)-对原生jdbc程序中的问题总结

来源:互联网 发布:手机连不上4g网络 编辑:程序博客网 时间:2024/05/17 03:16

mybatis学习笔记(1)-对原生jdbc程序中的问题总结

标签:mybatis


  • mybatis学习笔记1-对原生jdbc程序中的问题总结
    • jdbc编程步骤
    • 问题总结
    • 参考代码


本文总结jdbc编程的一般步骤,总结这样编程存在的问题,并附上典型地jdbc示例demo

jdbc编程步骤

  1. 加载数据库驱动
  2. 创建并获取数据库链接
  3. 创建jdbc statement对象
  4. 设置sql语句
  5. 设置sql语句中的参数(使用preparedStatement)
  6. 通过statement执行sql并获取结果
  7. 对sql执行结果进行解析处理
  8. 释放资源(resultSet、preparedstatement、connection)

问题总结

1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。

设想:使用数据库连接池管理数据库连接。

2.将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

3.向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:将sql语句及占位符号和参数全部配置在xml中。

4.从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

设想:将查询的结果集,自动映射成java对象。

参考代码

package com.iot.mybatis.jdbc;//import java.sql.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/** * Created by Administrator on 2016/2/21. */public class JdbcTest {    public static void main(String[] args) {        //数据库连接        Connection connection = null;        //预编译的Statement,使用预编译的Statement提高数据库性能        PreparedStatement preparedStatement = null;        //结果集        ResultSet resultSet = null;        try {            //加载数据库驱动            Class.forName("com.mysql.jdbc.Driver");            //通过驱动管理类获取数据库链接            connection =  DriverManager.getConnection("jdbc:mysql://120.25.162.238:3306/mybatis001?characterEncoding=utf-8", "root", "123");            //定义sql语句 ?表示占位符            String sql = "select * from user where username = ?";            //获取预处理statement            preparedStatement = connection.prepareStatement(sql);            //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值            preparedStatement.setString(1, "王五");            //向数据库发出sql执行查询,查询出结果集            resultSet =  preparedStatement.executeQuery();            //遍历查询结果集            while(resultSet.next()){                System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));            }        } catch (Exception e) {            e.printStackTrace();        }finally{            //释放资源            if(resultSet!=null){                try {                    resultSet.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            if(preparedStatement!=null){                try {                    preparedStatement.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            if(connection!=null){                try {                    connection.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}

作者@brianway更多文章:个人网站 | CSDN | oschina

0 0