日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为什么要用Mybatis框架---Mybatis学习笔记(一)

發布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么要用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語句硬編碼(也就是把變量寫死了)到java代碼中,如果sql 語句修改,需要重新編譯java代碼,不利于系統維護。
    解決方案:可以將sql語句配置在xml的配置文件中。這樣即使sql語句變化了,也不需要對java代碼進行重新編譯
  • 向preparedStatement中設置參數(preparedStatement.setString(1, "王五");),對占位符號位置和設置參數值,硬編碼在java代碼中,不利于系統維護。
    解決方案:將sql語句及占位符和參數全部配置到xml文件中
  • 從resutSet中遍歷結果集數據時(
  • while(resultSet.next()){System.out.println(resultSet.getString("id")+" "+resultSet.getString("username"));}

    ),
    存在硬編碼,將獲取表的字段進行硬編碼,不利于系統維護。
    解決方案:將查詢的結果集自動映射成java對象

    總結

    以上是生活随笔為你收集整理的为什么要用Mybatis框架---Mybatis学习笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。