为什么要用Mybatis框架---Mybatis学习笔记(一)
生活随笔
收集整理的這篇文章主要介紹了
为什么要用Mybatis框架---Mybatis学习笔记(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先使用原生態的JDBC來操作數據庫,從中發現存在的一些問題:
jdbc代碼:
public class JdbcTest {public static void main(String[] args) {Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {//加載數據庫驅動Class.forName("com.mysql.jdbc.Driver");//通過驅動管理類獲取數據庫鏈接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "123");//定義sql語句 ?表示占位符String sql = "select * from user where username = ?";//獲取預處理statementpreparedStatement = 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 blocke.printStackTrace();}}if(preparedStatement!=null){try {preparedStatement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}} }注意代碼中導入的包如下:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;為什么導入的都是java.sql包中的接口?
原因: 這里使用mysql的jar包中實現了這些接口,如果以后更換了數據庫oracle,oracle的數據庫jar包也實現了這些接口。就不需要重新引入了。如果這里導入的是mysql的jar中的實現類的話,那么更換為oracle數據庫之后,要重新導入oracle的jar的實現類。
上邊的代碼中的:
PreparedStatement preparedStatement = null;為什么要使用PreparedStatement而不使用Statement呢?
原因:preparedStatement是預編譯的statement,
通過statement向數據庫發送sql語句,然后數據庫那邊要對sql語句進行編譯,編譯完成之后把編譯的結果存儲到數據庫端的緩存中。下次如果發送相同的sql語句的話,數據庫就不需要編譯了,直接將緩存中的結果取過來就可以了。這樣提高了數據庫的性能。
通過上邊的原生版的jdbc發現的問題:
解決方案:使用數據庫的連接池來管理數據庫的連接
解決方案:可以將sql語句配置在xml的配置文件中。這樣即使sql語句變化了,也不需要對java代碼進行重新編譯
解決方案:將sql語句及占位符和參數全部配置到xml文件中
),
存在硬編碼,將獲取表的字段進行硬編碼,不利于系統維護。
解決方案:將查詢的結果集自動映射成java對象
總結
以上是生活随笔為你收集整理的为什么要用Mybatis框架---Mybatis学习笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基本的JVM内存分配过程案例
- 下一篇: mybatis框架总体说明---Myba