maven依賴包:
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
使用代碼
package com.test;
import java.sql.*;
public class jdbc {
public static void main(String[] args) {
//數據庫連接
Connection connection = null;
//預編譯的statement
PreparedStatement preparedStatement = null;
//結果集
ResultSet resultSet = null;
try{
//加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
//通過驅動管理類獲取數據庫鏈接,用戶名及密碼
connection = DriverManager.getConnection("jdbc:mysql://192.168.6.12:3306/test","dev","mybatis");
//定義sql語句 ?表示占位符
String sql = "select * from user where userName= ?";
//獲取預處理statement
preparedStatement = connection.prepareStatement(sql);
//設置參數,第一個參數為sql語句中參數的序號,第二個參數為設置的參數值
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(Exception e){
e.printStackTrace();
}
}
}
}
}
1).數據庫連接,使用時就創建,但是不使用立即釋放,導致對數據庫進行頻繁的開啟和關閉,造成數據庫資源浪費,性能下降。
解決:使用數據庫連接池管理數據庫鏈接
2).將sql語句硬編碼到java代碼中,及sql語句也寫在代碼中,如果sql語句需要修改,需要重新編譯java代碼,不利於系統維護。
解決:將sql語句配置在xml配置文件中,即使sql變化,不需要對java代碼進行重新編譯。
3).向PreparedStatement中設置參數,對占位符(?)位置和設置參數值也是硬編碼在java代碼中。不利於維護。
解決:也是將sql和占位符全部配置在xml中
4).從resutSet中遍歷結果集數據時,存在硬編碼,將獲取標的字段進行硬編碼,不利於維護。
解決:將查詢結果集,自動映射成java對象。
Mybatis是一個持久層架構,是apache下的頂級項目, 他是讓程序將主要精力放在sql上,通過mybatis提供的映射方式,自由靈活生成(半自動化,大部分需要程序員編寫sql)滿足需要的sql。
mybatis可以將向PreparedStatement中輸入參數自動進行輸入映射,將程序查詢結果集靈活的映射出java對象(輸出映射)
mybatis代碼下載地址:https://github.com/mybatis/mybatis-3/releases
1、mybatis框架

鏈接:http://www.icoolxue.com/album/show/216
深入理解mybatis原理:http://blog.csdn.net/column/details/mybatis-principle.html?page=1