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

MyBatis 核心配置文件及映射文件詳解

 更新時(shí)間:2023年01月13日 09:01:23   作者:楊宸楊  
MyBatis是支持定制化SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的持久層框架,本文重點(diǎn)介紹MyBatis 核心配置文件及映射文件,需要的朋友可以參考下

什么是SSM?

在這里插入圖片描述

IBatis提供的持久層框架包括SQLMap和Data Access Objects(DAO)

MyBatis特性

1)MyBatis是支持定制化SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的持久層框架
2)MyBatis 避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集
3) MyBatis可以使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和java的POJO (Plain Old Java Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫中的記錄
4)MyBatis是一個(gè)半自動(dòng)的ORM(Object Relation Mapping)框架(將數(shù)據(jù)庫中的數(shù)據(jù),映射到實(shí)體類對(duì)象,用戶直接操作實(shí)體類對(duì)象即可)

MyBatis和其它持久化技術(shù)對(duì)比

JDBC

1.SQL夾雜在java代碼中耦合度高,導(dǎo)致硬編碼內(nèi)傷
2.維護(hù)不易且實(shí)際開發(fā)需求中SQL有變化,頻繁修改的情況多見
3.代碼冗長(zhǎng),開發(fā)效率低

Hibernate和JPA

1.操作簡(jiǎn)單,開發(fā)效率高
2.程序中的長(zhǎng)難復(fù)雜SQL需要繞過框架
3.內(nèi)部自動(dòng)生產(chǎn)的SQL,不容易做特殊優(yōu)化
4.基于全映射的全自動(dòng)框架,大量字段的POJO進(jìn)行部分映射比較困難
5.反射操作太多,導(dǎo)致數(shù)據(jù)庫性能下降

MyBatis

1.輕量級(jí),性能出色
2.SQL和java編碼分開,功能邊界清晰,java代碼專注業(yè)務(wù)、SQL語句專注數(shù)據(jù)
3.開發(fā)效率稍遜于Hibernate,但是完全能夠接受

創(chuàng)建MyBatis的核心配置文件

習(xí)慣上命名為mybatis-config.xml,這個(gè)文件名僅僅是建議,并非強(qiáng)制要求。將來整合Spring之后,這個(gè)配置文件可以省略,所以大家操作時(shí)可以直接復(fù)制、粘貼
核心配詈文件主要用于配置連接數(shù)據(jù)庫的環(huán)境以及MyBatis的全同配置信息
核心配置文件存放的位置是srcimain/resources日錄下

<?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>

    <!--定義屬性文件
        resource:從類路徑下面讀取外部文件
        url:從一個(gè)資源定位地址來讀取配置文件
        提供參數(shù)使用: 可以使用 ${參數(shù)名} 進(jìn)行參數(shù)引用
    -->
  <environments default="default">
        <!--環(huán)境變量-->
        <environment id="default">
            <!--事務(wù)管理器:由JDBC管理事務(wù) -->
            <transactionManager type="JDBC"/>
            <!--數(shù)據(jù)源配置信息:POOLED 使用連接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="2022"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加載其他的映射文件 -->
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

創(chuàng)建mapper接口

MyBatls中的mapper接口相當(dāng)于以前的dao。但是區(qū)別在于,mapper僅僅是接口,我們不需要提供實(shí)現(xiàn)類。

創(chuàng)建MyBatis的映射文件

MyBatls中的mapper接口相當(dāng)于以前的dao。但是區(qū)別在于,mapper僅僅是接口,我們不需要提供實(shí)現(xiàn)類。

創(chuàng)建MyBatis的映射文件
相關(guān)概念:ORM(Object Relationship Mapping)對(duì)象關(guān)系映射
.對(duì)象:java的實(shí)體類對(duì)象
.關(guān)系:關(guān)系型數(shù)據(jù)庫
.映射:二者之間的對(duì)應(yīng)關(guān)系
映射文件的命名規(guī)則->表所對(duì)應(yīng)的實(shí)體類的類名+Mapper.xml

測(cè)試添加功能

SqlSession:代表java程序和數(shù)據(jù)庫之間的會(huì)話。(HttpSession是java程序和瀏覽器之間的會(huì)話)
SqlSessionFactory:是”生產(chǎn)SqlSession的”工廠。
工廠模式:如果創(chuàng)建某一個(gè)對(duì)象,使用的過程基本固定,那么我們就可以把創(chuàng)建這個(gè)對(duì)象的相關(guān)代碼封裝到一個(gè)”工廠類”中,以后都使用這個(gè)工廠類來”生產(chǎn)”我們需要的對(duì)象

示例代碼:

@Test
public void testMyBatis() throws IOException {
    //加載核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //獲取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //獲取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //獲取SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //獲取mapper接口對(duì)象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //測(cè)試功能
    int result = mapper.insertUser();
    //提交事務(wù)
    sqlSession.commit();
    System.out.println("result:"+result);
}

需要手動(dòng)提交數(shù)據(jù)的原因

在這里插入圖片描述

優(yōu)化功能

對(duì)于簡(jiǎn)單的SQL我們沒必要每次都手動(dòng)提交數(shù)據(jù),因此可以把默認(rèn)的手動(dòng)提交,變?yōu)樽詣?dòng)提交

在這里插入圖片描述

加入log4j日志文件功能

第一步 加入依賴

<!--log4j日志-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

第二步 加入配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
%m (%F:%L) \n"/>
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug"/>
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info"/>
    </logger>
    <root>
        <level value="debug"/>
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>

日志的級(jí)別

FATA(致命)>ERROR(錯(cuò)誤)>WARN(警告)>INFO(信息)>DEBUG(調(diào)試)
從左到右打印的內(nèi)容越來越詳細(xì)

在這里插入圖片描述

MyBatis核心配置文件之environment

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

MyBatis核心配置文件之properties

將數(shù)據(jù)庫信息寫在properties里面,之后在配置文件里面引用
第一步:創(chuàng)建properties文件,并且編寫數(shù)據(jù)庫配置信息

在這里插入圖片描述

第二步:在配置文件中引入properties文件

在這里插入圖片描述

第三步:編寫數(shù)據(jù)庫連接池

在這里插入圖片描述

MyBatis核心配置文件之typeAliases

MyBatis核心配置文件中,標(biāo)簽的順序:
propertiers?,setting?,typeAliases?,typeHandlers?
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,dataseIdProvider?,mappers?
為了避免重復(fù)頻繁的寫在mapper中的resultType寫全類名

在這里插入圖片描述

所以可以在配置文件中利用typeAliases標(biāo)簽創(chuàng)建一個(gè)簡(jiǎn)短的別名

在這里插入圖片描述

隨后在mapper文件寫sql語句時(shí)可以

在這里插入圖片描述

注意
不區(qū)分大小寫
若不設(shè)置屬性alis

在這里插入圖片描述

則會(huì)有默認(rèn)別名就是類名不區(qū)分大小寫

在這里插入圖片描述

MyBatis核心配置文件之mappers

在這里插入圖片描述

在這里插入圖片描述

當(dāng)表的數(shù)量太多的時(shí)候,需要大量的mapper標(biāo)簽來引入映射文件,為此我們可以通過引入包的方式來引入映射文件
以包為單位引入映射文件
要求:
1.mapper接口所在的包要和映射文件所在的包一致
2.mapper接口要和映射文件的名字一致

在這里插入圖片描述

思考:映射文件中的SQL該如何拼接?

在這里插入圖片描述

到此這篇關(guān)于MyBatis 核心配置文件及映射文件的文章就介紹到這了,更多相關(guān)MyBatis 核心配置文件映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redisson公平鎖的源碼解讀分享

    Redisson公平鎖的源碼解讀分享

    Redisson是一個(gè)在Redis的基礎(chǔ)上實(shí)現(xiàn)的Java駐內(nèi)存數(shù)據(jù)網(wǎng)格(In-Memory?Data?Grid)。這篇文章主要通過源碼和大家聊聊Redisson公平鎖,需要的可以了解一下
    2022-11-11
  • Java?Lombok實(shí)現(xiàn)手機(jī)號(hào)碼校驗(yàn)的示例代碼

    Java?Lombok實(shí)現(xiàn)手機(jī)號(hào)碼校驗(yàn)的示例代碼

    手機(jī)號(hào)碼校驗(yàn)通常是系統(tǒng)開發(fā)中最基礎(chǔ)的功能之一,本文主要介紹了Java?Lombok實(shí)現(xiàn)手機(jī)號(hào)碼校驗(yàn)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java案例分享-集合嵌套

    Java案例分享-集合嵌套

    這篇文章主要介紹了Java案例分享-集合嵌套,通過案例創(chuàng)建一個(gè)ArrayList集合,存儲(chǔ)三個(gè)元素,每一個(gè)元素都是HashMap,每一個(gè)HashMap的鍵和值都是String,并遍歷,實(shí)際操作內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • java項(xiàng)目jar包與jdk的版本不兼容的問題解決

    java項(xiàng)目jar包與jdk的版本不兼容的問題解決

    這篇文章主要介紹了java項(xiàng)目jar包與jdk的版本不兼容的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JAVA自定義異常使用方法實(shí)例詳解

    JAVA自定義異常使用方法實(shí)例詳解

    這篇文章主要介紹了JAVA自定義異常使用方法實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • spring 如何將配置信息注入靜態(tài)變量的方法

    spring 如何將配置信息注入靜態(tài)變量的方法

    本篇文章主要介紹了spring 如何將配置信息注入靜態(tài)變量的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java 后端開發(fā)中Tomcat服務(wù)器運(yùn)行不了的五種解決方案

    Java 后端開發(fā)中Tomcat服務(wù)器運(yùn)行不了的五種解決方案

    tomcat是在使用Java編程語言開發(fā)服務(wù)端技術(shù)使用最廣泛的服務(wù)器之一,但經(jīng)常在開發(fā)項(xiàng)目的時(shí)候會(huì)出現(xiàn)運(yùn)行不了的情況,這里總結(jié)出幾種能解決的辦法
    2021-10-10
  • Java連接數(shù)據(jù)庫oracle中文亂碼解決方案

    Java連接數(shù)據(jù)庫oracle中文亂碼解決方案

    這篇文章主要介紹了Java連接數(shù)據(jù)庫oracle中文亂碼解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java源碼解析HashMap簡(jiǎn)介

    Java源碼解析HashMap簡(jiǎn)介

    今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap簡(jiǎn)介,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java實(shí)現(xiàn)加鹽加密算法的示例詳解

    Java實(shí)現(xiàn)加鹽加密算法的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)加鹽加密算法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06

最新評(píng)論