首頁  >  文章  >  Java  >  分析Java中MyBatis的快速入門範例

分析Java中MyBatis的快速入門範例

PHPz
PHPz轉載
2023-05-10 08:16:071470瀏覽

    1.什麼是MyBatis

    簡單來說,MyBatis是一款優秀的持久層框架,用來簡化JDBC開發。 MyBatis本身是Apache的開源項目,期初叫做iBatis,2010年這個專案前移到google code,改名為MyBatista。在2013年該專案遷移到GitHub。

    概念中的持久層怎麼理解?指將資料保存到資料庫的那一層程式碼。在海量的程式碼中,為了確保每一塊程式碼的職責單一,把同資料庫操作的程式碼叫做持久層。同時,JavaEE三層架構中,表現層負責頁面的展示,業務層負責邏輯的處理,而持久層就是負責將資料儲存到資料庫中。

    什麼是框架?框架是指一個半成品的軟體,是一套可重用的,通用的,軟體基礎程式碼模型,同時,在框架基礎之上進行開發大量的節省了成本,而且更加的規範,通用且擴展性較強。

    2. JDBC存在的缺點

    既然我們使用MyBatis來簡化JDBC開發,那麼JDBC究竟有什麼缺點呢?

    硬編碼

    首先在註冊驅動,取得連結的時候,字串資訊如果發生變動,例如密碼,此時需要手動修改。其次,在定義sql語句時候,使用字串同樣使得程式碼的維護性變差。

    操作繁瑣

    當我們手動設定參數和手動設定結果集時,存在著操作繁瑣的問題。

    下面JDBC使用的一段程式碼做展示:

    分析Java中MyBatis的快速入門範例

    #3.Mybatis簡化JDBC開發

    既然JDBC開發存在硬編碼,操作繁瑣的缺點,那麼要怎麼解決這些問題呢?首先我們把字串寫到單獨的設定檔中,解決JDBC硬編碼的問題,其次,可以用一個方法來自動完成JDBC作業繁瑣的程式碼。於是,我們使用MyBatis來簡化JDBC開發。 MyBatis免除了幾乎所有的JDBC程式碼以及設定參數和取得結果集的工作。

    例如:在設定檔中寫入參數訊息,將來使用時直接讀取,解決硬編碼的問題

    <environment id="test">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <!--数据库连接信息-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="1234"/>
                </dataSource>
            </environment>
        </environments>

    市面上的持久層框架有很多的選擇,但是MyBatis在國內市場有很大的使用佔比。

    4.MyBatis快速入門|實戰項目詳解

    我們透過實作操作快速查詢user表中所有的數據來入門MyBatis,即查詢user表中的數據,放到user物件裡,在分別把對方放入集合中完成操作。透過下列步驟來完成動作:

    1. 建立user表,新增資料

    2. 建立模組,匯入座標

    3. 編寫MyBatis 核心配置文件,替換連接資訊來解決硬編碼的問題

    4. #編寫SQL映射文件,統一管理sql語句,解決編碼問題

    5. 寫程式碼

    在寫程式碼是使用下列步驟:

    1. 定義POJO類別

    2. 載入核心設定文件,取得sqlSessionFactory物件

    3. 取得sqlSession對象,執行sql語句

    4. 釋放資源

    整體的專案架構展示:

    分析Java中MyBatis的快速入門範例

    #下方示範透過詳細的示範,快速入門MyBatis: 

    建立user表,新增資料:

    create database mybatis;
    use mybatis;
    drop table if exists tb_user;
    create table tb_user(
    	id int primary key auto_increment,
    	username varchar(20),
    	password varchar(20),
    	gender char(1),
    	addr varchar(30)
    );
    INSERT INTO tb_user VALUES (1, &#39;小张&#39;, &#39;abc&#39;, &#39;男&#39;, &#39;北京&#39;);
    INSERT INTO tb_user VALUES (2, &#39;小李&#39;, &#39;123&#39;, &#39;女&#39;, &#39;天津&#39;);
    INSERT INTO tb_user VALUES (3, &#39;小美&#39;, &#39;456&#39;, &#39;女&#39;, &#39;上海&#39;);

    分析Java中MyBatis的快速入門範例

    這裡使用的是MySQL資料庫,使用navicat作為資料庫的視覺化工具。

    在idea中建立模組,導入座標:

    在idea中點選新項目,建置系統選擇Maven,輸入項目名稱(這裡使用MyBatis-demo),設定群組ID和工件ID,點選建立。接下來導入的依賴,將下面的依賴程式碼置於pom.xml 檔案中:

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>x.x.x</version>
    </dependency>

    接下來導入mysql依賴,junit座標和logback座標,把logback.xml設定檔貼到resources中:

    <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
            <!-- 添加slf4j日志api -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.20</version>
            </dependency>
            <!-- 添加logback-classic依赖 -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
            </dependency>
            <!-- 添加logback-core依赖 -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>

    編寫MyBatis 核心設定檔:

    在MyBatis-demo/src/main/resources中新設定檔mybatis.config.xml。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <!--数据库连接信息-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="abc123"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!--加载sql的映射文件-->
            <mapper resource="UerMapper.xml"/>
        </mappers>
    </configuration>

    編寫SQL映射檔:

    在MyBatis-demo/src/main/resources中新增sql的映射檔UserMapper.xml。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="test">
        <select id="selectAll" resultType="com.example.pojo.User">
            select * from tb_user;
        </select>
    </mapper>

    修改MyBatis的核心設定文件,用於載入sql的映射檔。

      <mappers>
            <!--加载sql的映射文件-->
            <mapper resource="UserMapper.xml"/>
      </mappers>

    完成以上操作就可以進行編碼了,首先要定義POJO類別:

    package com.example.pojo;
    public class User {
        private Integer id;
        private String username;
        private String password;
        private String gender;
        private String addr;
        public Integer getId() {
            return id;
        }
        public String getUsername() {
            return username;
        }
        public String getPassword() {
            return password;
        }
        public String getGender() {
            return gender;
        }
        public String getAddr() {
            return addr;
        }
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username=&#39;" + username + &#39;\&#39;&#39; +
                    ", gender=&#39;" + gender + &#39;\&#39;&#39; +
                    ", addr=&#39;" + addr + &#39;\&#39;&#39; +
                    &#39;}&#39;;
        }
    }

    載入核心設定文件,取得sqlSessionFactory物件:

    首先需要建立一個MyBatisDemo.java文件,加入一個主方法,寫程式碼。

    public class MyBatisDemo {
        public static void main(String[] args) throws IOException {
        	//加载MyBatis核心配置文件
            String resource = "mybatis.config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }
    }

    获取sqlSession对象,执行sql语句:

    //获取SqlSession对象,用它来执行sql
            SqlSession sqlSession=sqlSessionFactory.openSession();
            //执行sql
            List<User> users = sqlSession.selectList("test.selectALL");
            System.out.println(users);
    		//释放资源
            sqlSession.close();

    到这里我们就完成了整个项目的构建,接下来我们运行程序,可以看到,我们成功的查询到tb_user中的数据!

    分析Java中MyBatis的快速入門範例

    以上是分析Java中MyBatis的快速入門範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除