日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构

發布時間:2024/8/23 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Mybatis介紹
  • jdbc操作數據庫原生寫法
    • 使用jdbc編程問題總結
    • Mybatis架構

Mybatis介紹

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。
MyBatis是一個優秀的持久層框架,它對jdbc的操作數據庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如注冊驅動、創建connection、創建statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼。
Mybatis通過xml或注解的方式將要執行的各種statement(statement、preparedStatemnt、CallableStatement)配置起來,并通過java對象和statement中的sql進行映射生成最終執行的sql語句,最后由mybatis框架執行sql并將結果映射成java對象并返回。

jdbc操作數據庫原生寫法

JDBC連接以下數據庫分別要引入的jar包:

編碼步驟:
1、 加載數據庫驅動
2、 創建并獲取數據庫鏈接
3、 創建jdbc statement對象
4、 設置sql語句
5、 設置sql語句中的參數(使用preparedStatement)
6、 通過statement執行sql并獲取結果
7、 對sql執行結果進行解析處理
8、 釋放資源(resultSet、preparedstatement、connection)

jdbc程序:查詢數據庫操作的代碼

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", "root");// 定義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();}}} }

使用jdbc編程問題總結

  • 數據庫連接創建、釋放頻繁造成系統資源浪費,從而影響系統性能。如果使用數據庫連接池可解決此問題。
  • Sql語句在代碼中硬編碼,造成代碼不易維護,實際應用中sql變化的可能較大,sql變動需要改變java代碼。
  • 使用preparedStatement向占有位符號傳參數存在硬編碼,因為sql語句的where條件不一定,可能多也可能少,修改sql還要修改代碼,系統不易維護。
  • 對結果集解析存在硬編碼(查詢列名),sql變化導致解析代碼變化,系統不易維護,如果能將數據庫記錄封裝成pojo對象解析比較方便。
  • 好了!開始學習Mybatis吧!

    Mybatis架構


    框架圖的解釋:

    1、 mybatis配置
    SqlMapConfig.xml,此文件作為mybatis的全局配置文件,配置了mybatis的運行環境等信息。
    mapper.xml文件即sql映射文件,文件中配置了操作數據庫的sql語句。此文件需要在SqlMapConfig.xml中加載。
    2、 通過mybatis環境等配置信息構造SqlSessionFactory即會話工廠
    3、 由會話工廠創建sqlSession即會話,操作數據庫需要通過sqlSession進行。
    4、 mybatis底層自定義了Executor執行器接口操作數據庫,Executor接口有兩個實現,一個是基本執行器、一個是緩存執行器。
    5、 Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sql的id即是Mapped statement的id。
    6、 Mapped Statement對sql執行輸入參數進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執行sql前將輸入的java對象映射至sql中,輸入參數映射就是jdbc編程中對preparedStatement設置參數。
    7、 Mapped Statement對sql執行輸出結果進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執行sql后將輸出結果映射至java對象中,輸出結果映射過程相當于jdbc編程中對結果的解析處理過程。

    總結

    以上是生活随笔為你收集整理的Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构的全部內容,希望文章能夠幫你解決所遇到的問題。

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