有些時候,配置一個spring+mybatis框架,而後寫xml,dao ,service顯得特別繁瑣。java
若是咱們只是想查一下數據庫,不考慮鏈接複用也不考慮動態sql,能夠用原生的jdbc來實現,方便快捷,也有利於認識原生jdbc。mysql
咱們須要的東西其實很少:spring
一個數據庫鏈接的配置文件(甚至這個也能夠不須要),sql
db.properties數據庫
driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@ip:port:sid user=username password=pwd
一個classapache
import java.io.IOException; import java.sql.*; import java.util.HashMap; import java.util.Map; import java.util.Properties; /** * Created by tm on 2016/12/16. */ public class Test { /** * 初始化數據庫,加載驅動。 * 調用方法 * @param args */ public static void main(String[] args) { DbConfig.initDriver(); Map<String,Object> data = new HashMap<String, Object>(); Test test = new Test(); System.out.println(test.updateState(data)); } /** * 更新某個狀態 * @param data * @return */ public boolean updateState(Map<String, Object> data) { Connection conn = null; boolean flag = false; try { String sql = "update table set a=?,b=? "; conn = DriverManager.getConnection(dbConfig.url, dbConfig.user, dbConfig.password); PreparedStatement state = conn.prepareStatement(sql); state.setInt(1,1); state.setString(2,"2"); int count = state.executeUpdate(); if(count>0){ flag = true; } conn.commit(); state.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return flag; } /** * 靜態內部類,初始化以後就一直存在不會隨對象變化。 * 持有數據庫信息 */ static class DbConfig{ static String url; static String user; static String password; /** * init db driver */ public static void initDriver() { Properties props = new Properties(); { try { props.load(dbConfig.class.getClassLoader().getResourceAsStream("db.properties")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(-1); } } String driver = props.getProperty("driver"); try { Class.forName(driver); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(-1); } dbConfig.url = props.getProperty("url"); dbConfig.user = props.getProperty("user"); dbConfig.password = props.getProperty("password"); } } }
數據庫驅動ojdbc六、或者mysql驅動。mybatis
固然,以上只是很是簡單的用法,不考慮任何的擴展性重用性之類的。oracle
若是有稍微多一點的需求,就最好本身寫個dao。若是再多一點的需求就考慮使用框架了。框架
貼一個簡單的鏈接管理工具,DBUtil工具
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; /** * 負責管理數據庫鏈接 * @author TM * */ public class DBUtil { //鏈接池 private static BasicDataSource cp; static{ /* * 初始化靜態屬性! * 靜態塊因爲是在類第一次加載時執行 * 而且只會執行一次,因此在這裏初始化靜態屬性是 * 最適合的地方。 */ //java.util.properties Properties prop =new Properties(); try { prop.load(new FileInputStream("config.properties")); //根據配置項初始化 String driverName=prop.getProperty("driverName"); String url=prop.getProperty("url"); String username=prop.getProperty("username"); String password=prop.getProperty("password"); //最大鏈接數 int maxActive=Integer.parseInt(prop.getProperty("maxActive")); //最大等待時間 int maxWait=Integer.parseInt(prop.getProperty("maxWait")); System.out.println(driverName+"\n"+url+"\n"+username+"\n"+password); System.out.println(maxActive+"\n"+maxWait); //初始化鏈接池 cp=new BasicDataSource(); //至關於Class.forName()中的內容 cp.setDriverClassName(driverName); cp.setUrl(url); cp.setUsername(username); cp.setPassword(password); cp.setMaxActive(maxActive); cp.setMaxWait(maxWait); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 獲取一個數據庫鏈接 * @return * @throws Exception */ public static Connection getConnection() throws Exception{ /* * 向鏈接池要一條可用的空閒鏈接 * 若鏈接池尚有可用鏈接,會直接返回 * 若沒有,則該方法進入阻塞狀態,等待可用鏈接 * 等待的時間(就是初始化鏈接池時設置的maxWait) * 與初始化鏈接池時設置的maxWait的時間一致 * 若等待的時間內出現可用的空閒鏈接 * 則該方法會馬上返回該鏈接,若等待的時間超過maxWait後 * 仍然沒有得到可用鏈接,該方法會拋出超時異常。 */ return cp.getConnection(); } /** * 將給定的數據庫鏈接關閉 * @param conn */ public static void closeConnection(Connection conn){ try{ if(conn!=null){ //只是還給了鏈接池了。 conn.close(); } }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args) throws Exception{ Connection conn=DBUtil.getConnection(); } }