日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解MyBatis XML配置解析

瀏覽:78日期:2023-10-22 16:13:09
MyBatis核心配置文件

<?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='${driver}'/> <property name='url' value='${url}'/> <property name='username' value='${username}'/> <property name='password' value='${password}'/> </dataSource> </environment> </environments> <mappers> <mapper resource='org/mybatis/example/BlogMapper.xml'/> </mappers></configuration>

詳解MyBatis XML配置解析

注意:接下來(lái)所有的配置,都要按照上圖的順序進(jìn)行配置,否則會(huì)出錯(cuò)

1. 環(huán)境配置(environments)

MyBatis 可以配置成適應(yīng)多種環(huán)境,但每個(gè) SqlSessionFactory 實(shí)例只能選擇一種環(huán)境

environments 元素定義了如何配置環(huán)境。

其中可以嵌套多個(gè)環(huán)境

<environments default='development'> <!--環(huán)境1--> <environment id='development'><!--事務(wù)管理器--> <transactionManager type='JDBC'> <property name='...' value='...'/> </transactionManager><!--數(shù)據(jù)源--> <dataSource type='POOLED'> <property name='driver' value='${driver}'/> <property name='url' value='${url}'/> <property name='username' value='${username}'/> <property name='password' value='${password}'/> </dataSource> </environment> <!--環(huán)境2--> <environment> ... </environment> <!--環(huán)境3--> <environment> ... </environment></environments>

子元素節(jié)點(diǎn):environment

環(huán)境 ID:每個(gè)環(huán)境都有對(duì)應(yīng)的一個(gè)環(huán)境ID

默認(rèn)環(huán)境ID(比如:default=“development”) 環(huán)境可以隨意命名,但務(wù)必保證默認(rèn)的環(huán)境 ID 要匹配其中一個(gè)環(huán)境 ID。

事務(wù)管理器(transactionManager)

在 MyBatis 中有兩種類型的事務(wù)管理器:JDBC/MANAGED 默認(rèn)為 JDBC

數(shù)據(jù)源(dataSource)

dataSource 元素使用標(biāo)準(zhǔn)的 JDBC 數(shù)據(jù)源接口來(lái)配置 JDBC 連接對(duì)象的資源。 數(shù)據(jù)源是必須配置的。 有三種內(nèi)建的數(shù)據(jù)源類型 UNPOOLED/POOLED/JNDI unpooled:這個(gè)數(shù)據(jù)源的實(shí)現(xiàn)只是每次被請(qǐng)求時(shí)打開和關(guān)閉連接。 pooled(默認(rèn)):這種數(shù)據(jù)源的實(shí)現(xiàn)利用“池”的概念將 JDBC 連接對(duì)象組織起來(lái) , 這是一種使得并發(fā) Web 應(yīng)用快速響應(yīng)請(qǐng)求的流行處理方式。 jndi:這個(gè)數(shù)據(jù)源的實(shí)現(xiàn)是為了能在如 Spring 或應(yīng)用服務(wù)器這類容器中使用,容器可以集中或在外部配置數(shù)據(jù)源,然后放置一個(gè) JNDI 上下文的

數(shù)據(jù)源也有很多第三方的實(shí)現(xiàn):dbcp、c3p0、druid等等…

2. 屬性(properties)

我們利用Properties屬性來(lái)實(shí)現(xiàn)應(yīng)用配置文件

這些屬性可以在外部進(jìn)行配置,并可以進(jìn)行動(dòng)態(tài)替換。

方式一:直接在Mybatis核心配置文件中配置這些屬性(我們先前的方法)

詳解MyBatis XML配置解析

方式二:在 properties 元素的子元素中設(shè)置

編寫 config.properties

driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSH=true&useUnicode=true&characterEncoding=UTF-8username=rootpassword=200024

在核心配置文件中引入

<?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> <!--外部引入配置文件--> <properties resource='config.properties'/> <environments default='development'> <environment id='development'> <transactionManager type='JDBC'/> <dataSource type='POOLED'> <!--這里就不用配置屬性了,默認(rèn)即可--> <property name='driver' value='${driver}'/> <property name='url' value='${url}'/> <property name='username' value='${username}'/> <property name='password' value='${password}'/> </dataSource> </environment> </environments></configuration>

引入外部文件的同時(shí),也可以在其中增加一些屬性配置

優(yōu)先級(jí)問(wèn)題:首先讀取在 properties 元素體內(nèi)指定的屬性

<properties resource='config.properties'> <property name='username' value='root'/> <property name='password' value='200024'/></properties>

比如config.properties中的數(shù)據(jù)庫(kù)連接密碼正確,但是properties 元素體內(nèi)的密碼不正確,則會(huì)報(bào)錯(cuò),因?yàn)閮?yōu)先讀取properties 元素體內(nèi)指定的屬性

3. 類型別名(typeAliases)

注意位置順序

詳解MyBatis XML配置解析

方式一:通過(guò)typeAlias起別名

類型別名可為 Java 類型設(shè)置一個(gè)縮寫名字。 它僅用于 XML 配置,意在降低冗余的全限定類名書寫

<typeAliases> <typeAlias type='pojo.User' alias='User'/></typeAliases>

type的值為指定Java類名,alias為新起的別名

方式二:通過(guò)package起別名

也可以指定一個(gè)包名,MyBatis 會(huì)在包名下面搜索對(duì)應(yīng)的實(shí)體類

詳解MyBatis XML配置解析

<typeAliases> <package name='pojo'/></typeAliases>

每一個(gè)在包 pojo 中的 實(shí)體類,在沒(méi)有注解的情況下,會(huì)使用 實(shí)體類 的首字母小寫的非限定類名來(lái)作為它的別名。 比如 pojo.User 的別名為 user;若有注解,則別名為其注解值。

@Alias('hello')public class User { ... }

此時(shí),別名為hello

詳解MyBatis XML配置解析

建議

在實(shí)體類較少的時(shí)候,使用第一種方式 在實(shí)體類較多的時(shí)候,使用第二種方式

下面是一些為常見的 Java 類型內(nèi)建的類型別名。它們都是不區(qū)分大小寫的,注意,為了應(yīng)對(duì)原始類型的命名重復(fù),采取了特殊的命名風(fēng)格。

別名 映射的類型 _byte byte _long long _short short _int int _integer int _double double _float float _boolean boolean string String byte Byte long Long short Short int Integer integer Integer double Double float Float boolean Boolean date Date decimal BigDecimal bigdecimal BigDecimal object Object map Map hashmap HashMap list List arraylist ArrayList collection Collection iterator Iterator

4. 設(shè)置(settings)

這是 MyBatis 中極為重要的調(diào)整設(shè)置,它們會(huì)改變 MyBatis 的運(yùn)行時(shí)行為

設(shè)置(settings)查看幫助文檔https://mybatis.org/mybatis-3/zh/index.html

懶加載 日志實(shí)現(xiàn) 緩存開啟關(guān)閉

最常用:日志

4.1、日志工廠

如果一個(gè)數(shù)據(jù)庫(kù)操作出現(xiàn)了異常,我們需要排錯(cuò),日志是最好的助手!

詳解MyBatis XML配置解析

logImpl

SLF4J LOG4J LOG4J2 JDK_LOGGING COMMONS_LOGGING STDOUT_LOGGING NO_LOGGING

在MyBatis核心配置文件中配置我們的日志

注意大小寫問(wèn)題!!!不要寫錯(cuò)!!

注意位置順序問(wèn)題

<settings> <!--標(biāo)準(zhǔn)日志工廠實(shí)現(xiàn)--> <setting name='logImpl' value='STDOUT_LOGGING'/></settings>

然后運(yùn)行我們的測(cè)試類,發(fā)現(xiàn)多了很多內(nèi)容,這就是我們的日志

詳解MyBatis XML配置解析

4.2、LOG4J

什么是LOG4J?

Log4j是Apache的一個(gè)開源項(xiàng)目,通過(guò)使用Log4j,我們可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI組件,甚至是套接口服務(wù)器、NT的事件記錄器、UNIX Syslog守護(hù)進(jìn)程等我們也可以控制每一條日志的輸出格式通過(guò)定義每一條日志信息的級(jí)別,我們能夠更加細(xì)致地控制日志的生成過(guò)程可以通過(guò)一個(gè)配置文件來(lái)靈活地進(jìn)行配置,而不需要修改應(yīng)用的代碼

使用步驟

導(dǎo)包

<!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>

配置log4j.properties

#將等級(jí)為DEBUG的日志信息輸出到console和file這兩個(gè)目的地,console和file的定義在下面的代碼log4j.rootLogger=DEBUG,console,file#控制臺(tái)輸出的相關(guān)設(shè)置log4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target = System.outlog4j.appender.console.Threshold=DEBUGlog4j.appender.console.layout = org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=[%c]-%m%n#文件輸出的相關(guān)設(shè)置log4j.appender.file = org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=./log/zsr.loglog4j.appender.file.MaxFileSize=10mblog4j.appender.file.Threshold=DEBUGlog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n#日志輸出級(jí)別log4j.logger.org.mybatis=DEBUGlog4j.logger.java.sql=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.ResultSet=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG

在MyBatis核心配置文件中配置我們LOG4J

<settings> <setting name='logImpl' value='LOG4J'/></settings>

測(cè)試

詳解MyBatis XML配置解析

同時(shí)在當(dāng)前項(xiàng)目目錄下生成了zsr.log文件,這里面保存了我們的日志信息

這就是我們?cè)?b>log4j.properties進(jìn)行的設(shè)置,我們同樣可以設(shè)置其他的內(nèi)容

詳解MyBatis XML配置解析

IDEA可能出現(xiàn)打不開的情況,我們將其換成.txt格式就可以打開了

詳解MyBatis XML配置解析

詳解MyBatis XML配置解析

簡(jiǎn)要使用

要在使用LOG4J的類中,導(dǎo)入包 org.apache.log4j.Logger

日志對(duì)象,參數(shù)為當(dāng)前類的class

static Logger logger = Logger.getLogger(UserMapperTest.class);

詳解MyBatis XML配置解析

編寫測(cè)試方法,三種常見日志級(jí)別

@Testpublic void testLog4j() { logger.info('info:進(jìn)入了testLog4j方法'); logger.debug('debug:進(jìn)入了testLog4j方法'); logger.error('error:進(jìn)入了testLog4j方法');}

運(yùn)行該方法

詳解MyBatis XML配置解析

5. 映射器(mappers)

mappers

映射器 : 定義映射SQL語(yǔ)句文件

告訴 MyBatis 到哪里去找映射文件

使用相對(duì)于類路徑的資源引用 使用完全限定資源定位符(包括 file:/// 的 URL) 使用類名和包名等。

方式一:使用相對(duì)于類路徑的資源引用注冊(cè)綁定(推薦)

<mappers> <mapper resource='mapper/UserMapping.xml'/></mappers>

方式二:使用映射器接口實(shí)現(xiàn)類的完全限定類名注冊(cè)綁定

<mappers> <mapper /></mappers>

常見問(wèn)題:

詳解MyBatis XML配置解析

注意點(diǎn):

接口和他的Mapper配置文件必須同名 接口和他的Mapper配置文件必須在同一個(gè)包下

我的問(wèn)題:Mapper接口和Mapper配置文件沒(méi)有同名!!

詳解MyBatis XML配置解析

修改后:

詳解MyBatis XML配置解析

方式三: 將包內(nèi)的映射器接口實(shí)現(xiàn)全部注冊(cè)為映射器

<mappers> <package name='mapper'/></mappers>

注意點(diǎn)同方式二:

接口和他的Mapper配置文件必須同名 接口和他的Mapper配置文件必須在同一個(gè)包下 6. 其他配置

了解~

typeHandlers(類型處理器)

無(wú)論是 MyBatis 在預(yù)處理語(yǔ)句(PreparedStatement)中設(shè)置一個(gè)參數(shù)時(shí),還是從結(jié)果集中取出一個(gè)值時(shí), 都會(huì)用類型處理器將獲取的值以合適的方式轉(zhuǎn)換成 Java 類型。 你可以重寫類型處理器或創(chuàng)建你自己的類型處理器來(lái)處理不支持的或非標(biāo)準(zhǔn)的類型。【了解即可】

objectFactory(對(duì)象工廠)

MyBatis 每次創(chuàng)建結(jié)果對(duì)象的新實(shí)例時(shí),它都會(huì)使用一個(gè)對(duì)象工廠(ObjectFactory)實(shí)例來(lái)完成。 默認(rèn)的對(duì)象工廠需要做的僅僅是實(shí)例化目標(biāo)類,要么通過(guò)默認(rèn)構(gòu)造方法,要么在參數(shù)映射存在的時(shí)候通過(guò)有參構(gòu)造方法來(lái)實(shí)例化。 如果想覆蓋對(duì)象工廠的默認(rèn)行為,則可以通過(guò)創(chuàng)建自己的對(duì)象工廠來(lái)實(shí)現(xiàn)。【了解即可】

plugins(插件)

三個(gè)常用插件:

mybatis-generator-core mybatis-plus 通用mapper

到此這篇關(guān)于詳解MyBatis XML配置解析的文章就介紹到這了,更多相關(guān)MyBatis XML配置內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
老司机精品视频在线播放| 欧美亚洲一区二区三区| 国产精成人品2018| 国产精区一区二区| 成人午夜网址| 婷婷成人在线| 亚洲自啪免费| 亚洲a成人v| 国产精品极品| 亚洲播播91| 麻豆成人在线| 国产精品网站在线看| 精品国产精品久久一区免费式| 国产传媒在线| 亚洲福利免费| 蜜桃成人av| 中文字幕日本一区二区| 国产福利亚洲| 1024精品一区二区三区| 亚洲乱码久久| 麻豆成人av在线| 日韩欧美少妇| 色综合视频一区二区三区日韩 | 亚洲午夜免费| 国产精品红桃| 91精品国产乱码久久久久久久| 蜜桃视频一区二区三区在线观看| 亚洲欧美网站在线观看| 欧美激情精品| 欧美福利专区| 日韩国产在线观看一区| 大香伊人久久精品一区二区 | 国产精品videossex久久发布| 日韩在线观看不卡| 亚洲精品第一| 欧美不卡高清一区二区三区| 蜜臀av在线播放一区二区三区| 荡女精品导航| 综合视频一区| 91视频一区| 日本亚洲不卡| 亚洲五月婷婷| 久久99青青| 蜜臀va亚洲va欧美va天堂 | 久久久久久亚洲精品美女| 好吊一区二区三区| 国语精品一区| 日本在线一区二区三区| 国产在线日韩| 精品国产91| 日韩二区三区在线观看| 在线看片不卡| 国产一区二区三区亚洲综合| 亚洲电影在线一区二区三区| 欧美国产免费| 97久久精品| 午夜在线播放视频欧美| 国产精品99视频| 国产毛片精品久久| 蜜臀久久99精品久久久久久9| 91亚洲自偷观看高清| 91国内精品| 亚洲人成高清| 国产农村妇女精品一二区| 午夜影院一区| 久久精品国产99国产精品| 日韩精品视频中文字幕| 国产精品三上| 色网在线免费观看| 久久婷婷国产| 国产精品日韩精品中文字幕| 婷婷综合国产| 美女国产一区| 午夜欧美在线| 国产99精品一区| 欧美丰满日韩| 久久精品女人| 国产精品乱战久久久| 欧美偷窥清纯综合图区| 热久久免费视频| 在线 亚洲欧美在线综合一区| 黄色在线网站噜噜噜| 丰满少妇一区| 国产精品黄色| 国产精品资源| 国产日本久久| 青青草国产精品亚洲专区无| 免费一级片91| 亚洲香蕉久久| 日韩精品视频网站| 欧美亚洲色图校园春色| 久久精品 人人爱| 欧美一区二区三区免费看| 国产精品女主播一区二区三区| 红桃视频欧美| 一本综合精品| 国产一精品一av一免费爽爽| 久久不卡国产精品一区二区| 欧美日韩午夜电影网| 国产欧美视频在线| 国产极品嫩模在线观看91精品| 久久久精品国产**网站| 国产在线观看91一区二区三区| 色婷婷色综合| 999国产精品视频| 91精品二区| 亚洲图片久久| 97精品久久| 成人在线视频中文字幕| 久草免费在线视频| 久久精品成人| 亚洲一区二区日韩| 欧美一区精品| 国产成人精品免费视| 日韩亚洲一区在线| 夜久久久久久| 亚洲精品日本| 欧美国产视频| 精品成人免费一区二区在线播放| 亚洲精华国产欧美| 日本在线视频一区二区| 久久香蕉网站| 在线一区免费观看| 国产精品免费不| 92国产精品| 石原莉奈一区二区三区在线观看| 欧美日韩调教| 日韩欧美一区二区三区免费观看| 国产视频久久| 国产精品极品国产中出| 亚洲视频综合| 国产欧美视频在线| 国产专区一区| 欧美伊人影院| 激情欧美日韩一区| 欧美久久久网站| 久久久久99| 国产情侣一区| 欧美日韩免费观看一区=区三区| 偷拍亚洲精品| 久久久久久黄| 日韩av一级片| 日韩精品免费一区二区三区| 亚洲天堂免费| 成人在线丰满少妇av| 夜夜嗨网站十八久久| 欧美1区二区| 国产精品毛片| 国产aa精品| 一本综合精品| 亚洲四虎影院| 麻豆视频久久| 日日夜夜免费精品视频| 激情欧美一区| 国产成年精品| 日韩区一区二| 91国语精品自产拍| 91欧美在线| 久久精品av麻豆的观看方式| 欧美理论视频| 国产一区二区三区四区二区| 亚洲免费专区| 亚洲天堂成人| 国产伊人久久| 日韩精品国产精品| 欧美另类专区| 成人午夜在线| 91成人在线网站| 日韩一区二区免费看| 日本精品黄色| 免费精品一区| 91精品国产一区二区在线观看| 国产精品普通话对白| 亚洲不卡系列| 国产66精品| 国产高清精品二区| 欧美三级第一页| 亚洲在线久久| 日韩中文字幕av电影| 精品日韩毛片| 99国产精品免费视频观看| 国产一区二区三区亚洲| 国产精品一区三区在线观看| 亚洲欧洲免费| 伊人国产精品| 中文字幕av一区二区三区四区| 不卡一区2区| 久久久久久黄| 日韩亚洲一区在线| 久久久久观看| 久久99精品久久久野外观看| 国产精品亚洲人成在99www | 国产午夜久久| 亚洲女同中文字幕| 红桃视频亚洲| 在线综合亚洲| 丝袜脚交一区二区| 亚洲我射av| 日本免费在线视频不卡一不卡二| 免费成人av在线播放|