欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入淺出JAVA MyBatis-快速入門

 更新時(shí)間:2021年06月28日 10:42:43   作者:管世盎  
這篇文章主要介紹了在今天這篇博文中,我將要介紹一下mybatis的框架原理,以及mybatis的入門程序,實(shí)現(xiàn)用戶的增刪改查,她有什么優(yōu)缺點(diǎn)以及mybatis和hibernate之間存在著怎么樣的關(guān)系,大家這些問題一起通過本文學(xué)習(xí)吧

創(chuàng)建項(xiàng)目前的環(huán)境搭建

本篇使用工具:

1、JDK:jdk1.8

2、Mysql l數(shù)據(jù)庫(kù) :mysql-5.7.31-winx64

3、Maven 開發(fā)工具 :apache-maven-3.8.1

4、IDEA開發(fā)工具: IntelliJ IDEA 2020.1.3 x64

在這里我們使用 MyBatis 開發(fā)一個(gè)簡(jiǎn)單的 Java 項(xiàng)目完成增刪改查(默認(rèn)你已安裝JDK和MySQL及會(huì)使用Maven和IDEA的基本操作)

簡(jiǎn)介

什么是 MyBatis?

MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲(chǔ)過程以及高級(jí)映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡(jiǎn)單的 XML 或注解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對(duì)象)為數(shù)據(jù)庫(kù)中的記錄。

特點(diǎn)

1.簡(jiǎn)單易學(xué)本身就很小且簡(jiǎn)單。沒有任何第三方依賴,最簡(jiǎn)單安裝只要兩個(gè)jar文件+配置幾個(gè)sql映射文件易于學(xué)習(xí),易于使用,通過文檔和源代碼,可以比較完全的掌握它的設(shè)計(jì)思路和實(shí)現(xiàn)。

2.靈活:mybatis不會(huì)對(duì)應(yīng)用程序或者數(shù)據(jù)庫(kù)的現(xiàn)有設(shè)計(jì)強(qiáng)加任何影響。 sql寫在xml里,便于統(tǒng)一管理和優(yōu)化。通過sql語(yǔ)句可以滿足操作數(shù)據(jù)庫(kù)的所有需求。

解除sql與程序代碼的耦合:通過提供DAO層,將業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯分離,使系統(tǒng)的設(shè)計(jì)更清晰,更易維護(hù),更易單元測(cè)試。sql和代碼的分離,提高了可維護(hù)性。

(1)提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的orm字段關(guān)系映射

(2)提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組建維護(hù)

(3)提供xml標(biāo)簽,支持編寫動(dòng)態(tài)sql

(開始)創(chuàng)建Maven項(xiàng)目,導(dǎo)入依賴

創(chuàng)建一個(gè)新的Maven項(xiàng)目

第一步:

第一步

第二步:

第二步

第三步:

第三步

第四步

在這里插入圖片描述

第五步

在這里插入圖片描述

所需依賴

直接放到 pom.xml中即可

<dependencies>
        <!--junit:測(cè)試用的-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!--    mybatis依賴-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--    mysql驅(qū)動(dòng)-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
        </dependency>
    </dependencies>
    <build>
    <resources>
        <resource>
            <directory>src/main/java</directory><!--所在目錄-->
            <includes><!--包括目錄下的 .properties,.xml 文件都會(huì)掃描到-->
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
    </build>

(開始)在數(shù)據(jù)庫(kù)中創(chuàng)建表

創(chuàng)建 users 表

表名 :users

userld :id
userName : 姓名
userword : 密碼
sex : 性別
email :郵箱 

創(chuàng)建表詳細(xì)信息

在這里插入圖片描述

添加幾條假數(shù)據(jù)

在這里插入圖片描述

創(chuàng)建實(shí)體類

包名

在這里插入圖片描述

給實(shí)體類添加 有參,無參方法,get,set方法,toString方法

package com.guanshiang.pojo;
//實(shí)體類
public class Users {
    private Integer userId;
    private String userName;
    private String userword;
    private String sex;
    private String email;
    public Users() {
    }
    public Users(Integer userId, String userName, String userword, String sex, String email) {
        this.userId = userId;
        this.userName = userName;
        this.userword = userword;
        this.sex = sex;
        this.email = email;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserword() {
        return userword;
    }
    public void setUserword(String userword) {
        this.userword = userword;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "Users{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", userword='" + userword + '\'' +
                ", sex='" + sex + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

創(chuàng)建對(duì)應(yīng)的接口,以及映射,xml文件

接口:

package com.guanshiang.mapper;
import com.guanshiang.pojo.Users;
import java.util.List;
//接口 操作Users表
public interface UsersMapper {
    //增加一條
    int addUsers(Users users);
    //刪除一條
    int deleteUsersById(int id);
    //修改一條
    int updateUsers(Users users);
    //查詢Users表的所有數(shù)據(jù)
    List<Users> queryUsers();
    //查詢Users一條
    Users queryUsersByid(int id);
}

映射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">
<!--對(duì)應(yīng)接口名-->
<mapper namespace="com.guanshiang.mapper.UsersMapper">
<!--
    select : 表示查詢操作
    id:你要執(zhí)行的sql語(yǔ)法的唯一標(biāo)識(shí),mybatis會(huì)使用這個(gè)id的值來找到要執(zhí)行的sql語(yǔ)句
        可以自定義,但是要求你使用接口中的方法名稱。
      resultType : 表示結(jié)果類型的,是sql語(yǔ)句執(zhí)行后得到ResultSet,遍歷這個(gè)ResultSet得到j(luò)ava對(duì)象的類型   執(zhí)行完sql語(yǔ)句后,返回的java對(duì)象的類型
                值寫的類型是權(quán)限類名稱
 -->
    <!--查詢所有-->
    <select id="queryUsers" resultType="com.guanshiang.pojo.Users">
        select * from users
    </select>
</mapper>
<!--
    sql映射文件:寫sql語(yǔ)句的,mybatis會(huì)執(zhí)行這些sql
    1、指定約束文件
    <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
         mybatis-3-mapper.dtd是約束文件的名稱,擴(kuò)展名是dtd的。
     2、約束文件的作用:現(xiàn)在,檢查在當(dāng)前文件中出現(xiàn)的標(biāo)簽,屬性必須符合mybatis的要求
     3、mapper 是當(dāng)前文件的根標(biāo)簽,必須的。
        namepace:叫做命名空間,唯一值的,可以是自定義的字符串,
                要求你使用dao接口的全限定名稱。
     4、在當(dāng)前文件中,可以使用特定的標(biāo)簽,表示數(shù)據(jù)庫(kù)的特定操作。
        <select>: 表示執(zhí)行查詢
        <update>:表示更新數(shù)據(jù)庫(kù)的操作,就是在<update>中 寫的是update sql語(yǔ)句
        <insert>:表示插入,放的是insert語(yǔ)句
        <delete>:表示刪除,執(zhí)行的delete語(yǔ)句
-->

從 XML 中構(gòu)建 SqlSessionFactory

以下來自Mybatis官方文檔

每個(gè)基于 MyBatis 的應(yīng)用都是以一個(gè) SqlSessionFactory 的實(shí)例為核心的。 SqlSessionFactory 的實(shí)例可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件或一個(gè)預(yù)先配置的 Configuration 實(shí)例來構(gòu)建出 SqlSessionFactory 實(shí)例。 從 XML 文件中構(gòu)建 SqlSessionFactory 的實(shí)例非常簡(jiǎn)單,建議使用類路徑下的資源文 件進(jìn)行配置。 但也可以使用任意的輸入流(InputStream)實(shí)例,比如用文件路徑字符 串或 file:// URL 構(gòu)造的輸入流。MyBatis 包含一個(gè)名叫 Resources 的工具類,它包含 一些實(shí)用方法,使得從類路徑或其它位置加載資源文件更加容易。

String resource = “org/mybatis/example/mybatis-config.xml”; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);

XML 配置文件中包含了對(duì) MyBatis 系統(tǒng)的核心設(shè)置,包括獲取數(shù)據(jù)庫(kù)連接實(shí)例的數(shù)據(jù) 源(DataSource)以及決定事務(wù)作用域和控制方式的事務(wù)管理器 (TransactionManager)。后面會(huì)再探討 XML 配置文件的詳細(xì)內(nèi)容,這里先給出一個(gè) 簡(jiǎn)單的示例:

創(chuàng)建XML配置文件

在這里插入圖片描述

內(nèi)容如下:

千萬注意:下面連接數(shù)據(jù)庫(kù)信息,要寫你本地的信息。千萬注意:下面連接數(shù)據(jù)庫(kù)信息,要寫你本地的信息。千萬注意:下面連接數(shù)據(jù)庫(kù)信息,要寫你本地的信息。

<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--    環(huán)境配置:數(shù)據(jù)庫(kù)的連接信息
        default:必須和某個(gè)environment的id值一樣。
        告訴mybatis使用哪個(gè)數(shù)據(jù)庫(kù)的連接信息,也就是訪問哪個(gè)數(shù)據(jù)庫(kù)
        因?yàn)榭赡軙?huì)有多個(gè)environment,也就是會(huì)有多個(gè)表數(shù)據(jù),配置不同的表用不同的id
-->
        <environments default="mydiv">
<!--       environment     一個(gè)數(shù)據(jù)庫(kù)信息的配置,環(huán)境
        id:一個(gè)唯一值,自定義:表示環(huán)境的名稱
-->
            <environment id="mydiv">
<!--
    transactionManager: mybatis的事物務(wù)型
        type:JDBC(表示使用jdbc中的Connection對(duì)象的commit,rollback做事務(wù)處理)
-->
                <transactionManager type="JDBC"/>
<!--
        dataSource:表示數(shù)據(jù)源,連接數(shù)據(jù)庫(kù)的
            type:表示數(shù)據(jù)源的類型,POOLED表示使用連接池
-->
                <dataSource type="POOLED">
<!--
    driver,user,username,password 是固定的,不能自定義。
-->
                    <!--數(shù)據(jù)庫(kù)的驅(qū)動(dòng)名-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <!--連接數(shù)據(jù)庫(kù)的url字符串-->
                     <property name="url" value="jdbc:mysql://localhost:3306/guan"/>
<!--                    訪問數(shù)據(jù)庫(kù)的數(shù)據(jù)名稱-->
                    <property name="username"   value="root"/>
<!--                    密碼-->
                     <property name="password" value="guanshiang"/>
                </dataSource>
            </environment>
        </environments>
<!--    指定 sql mapper(sql映射文件)的位置-->
        <mappers>
<!--       一個(gè)1mapper標(biāo)簽指定一個(gè)文件的位置
            從類路徑開始的路徑信息。 target/clasess(類路徑)
     -->
<!--            可出現(xiàn)多次mapper -->
            <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
        </mappers>
</configuration>
<!--
    myvatis的主配置文件:主要定義了數(shù)據(jù)庫(kù)的配置信息,sql映射文件的位置。

    1、約束文件的說明
    <!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
        mybatis-3-config.dtd:約束文件名稱
    2、configuration:根標(biāo)簽
-->

注意:看文件是否正確

    <mappers>
        <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
    </mappers>

在測(cè)試類中測(cè)試

在test中創(chuàng)建 測(cè)試類 Test01

package com.guanshiang;
import com.guanshiang.pojo.Users;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Test01 {
    @Test
    public void test() throws IOException {
        //訪問mybatis 讀取student數(shù)據(jù)
        //1、定義mybatis主配置文件的名稱,從類路徑的根開始(target/clasess)
        String config="mybatis.xml";
        //2、讀取這個(gè)config表示的文件
        InputStream in = Resources.getResourceAsStream(config);
        //3、創(chuàng)建SqlSessionFactoryBuider對(duì)象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //4、創(chuàng)建SqlSessionFactory對(duì)象
        SqlSessionFactory factory = builder.build(in);
        //5、【重要】獲取SqlSession對(duì)象,從SqlSessionFactory中獲取SqlSession
        SqlSession sqlSession = factory.openSession();
        //6、【重要】指定要執(zhí)行的sql語(yǔ)句的標(biāo)識(shí)。sql映射文件中的namecapce + "." + 標(biāo)簽的id值
        String sqlId = "com.guanshiang.mapper.UsersMapper"+"."+"queryUsers";
        //7、執(zhí)行sql語(yǔ)句,通過sqlId執(zhí)行
        List<Users> users = sqlSession.selectList(sqlId);
        //8、輸出
        for (Users u:users){
            System.out.println(u);
        }
        //9、關(guān)閉sqlSession對(duì)象
        sqlSession.close();
    }
}

運(yùn)行結(jié)果:

Users{userId=2, userName='管世軒', userword='1234', sex='男', email='21@qq.com'}
Users{userId=3, userName='管世盎', userword='weqrwr', sex='男', email='2722696413@qq.com'}
Users{userId=4, userName='管世千', userword='guanshiang', sex='男', email='1234@qq.com'}
Users{userId=10, userName='花花', userword='123456', sex='女', email='2722696413@qq.com'}
Users{userId=11, userName='李博', userword='asdfasf', sex='男', email='2722696413@qq.com'}

總體目錄

在這里插入圖片描述

總結(jié):

本次沒有采用Mybatis工具類等。

如果想完成增刪改查等,只需要

先寫接口,在寫對(duì)應(yīng)的sql映射文件.xml

在測(cè)試類中測(cè)試即可,改變 6、7、8步驟即可

接口已在上面寫好。

本篇就先完成一個(gè)查詢。

備注:感謝前輩們提供的學(xué)習(xí)資源,
本片借鑒于 :MyBatis官網(wǎng)文檔

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java實(shí)戰(zhàn)寵物醫(yī)院預(yù)約掛號(hào)系統(tǒng)的實(shí)現(xiàn)流程

    Java實(shí)戰(zhàn)寵物醫(yī)院預(yù)約掛號(hào)系統(tǒng)的實(shí)現(xiàn)流程

    只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+JSP+Spring+SpringBoot+MyBatis+html+layui+maven+Mysql實(shí)現(xiàn)一個(gè)寵物醫(yī)院預(yù)約掛號(hào)系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-01-01
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(58)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(58)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • Java設(shè)計(jì)模式之適配器模式(Adapter模式)介紹

    Java設(shè)計(jì)模式之適配器模式(Adapter模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之適配器模式(Adapter模式)介紹,本文講解了為何使用適配器模式、如何使用適配器模式等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Java的幾種文件拷貝方式示例詳解

    Java的幾種文件拷貝方式示例詳解

    在Java編程中文件操作是常見且重要的任務(wù)之一,其中文件拷貝是一種基本操作,這篇文章主要給大家介紹了關(guān)于Java幾種文件拷貝方式的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-08-08
  • java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù)

    java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù)

    這篇文章主要介紹了java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java實(shí)體類轉(zhuǎn)成map的實(shí)現(xiàn)

    java實(shí)體類轉(zhuǎn)成map的實(shí)現(xiàn)

    這篇文章主要介紹了java實(shí)體類轉(zhuǎn)成map的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java基于棧方式解決漢諾塔問題實(shí)例【遞歸與非遞歸算法】

    Java基于棧方式解決漢諾塔問題實(shí)例【遞歸與非遞歸算法】

    這篇文章主要介紹了Java基于棧方式解決漢諾塔問題的方法,結(jié)合實(shí)例形式分析了java棧方式采用遞歸與非遞歸算法解決漢諾塔問題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • SpringBoot 回滾操作的幾種實(shí)現(xiàn)方式

    SpringBoot 回滾操作的幾種實(shí)現(xiàn)方式

    回滾操作是一種常見的操作,用于撤銷之前執(zhí)行的操作,本文主要介紹了SpringBoot回滾操作的幾種實(shí)現(xiàn)方式,包含基于異常類型的回滾、基于自定義邏輯的回滾和基于數(shù)據(jù)庫(kù)狀態(tài)的回滾,感興趣的可以了解一下
    2024-03-03
  • Mybatis使用@Select注解sql中使用in問題

    Mybatis使用@Select注解sql中使用in問題

    這篇文章主要介紹了Mybatis使用@Select注解sql中使用in問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Linux配置jdk1.8與jdk17兼容并存并啟動(dòng)jar包指定jdk版本

    Linux配置jdk1.8與jdk17兼容并存并啟動(dòng)jar包指定jdk版本

    JDK是Java語(yǔ)言的軟件開發(fā)工具包,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序,這篇文章主要給大家介紹了關(guān)于Linux配置jdk1.8與jdk17兼容并存并啟動(dòng)jar包指定jdk版本的相關(guān)資料,需要的朋友可以參考下
    2024-08-08

最新評(píng)論