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