MyBatis 核心配置文件及映射文件詳解
什么是SSM?
IBatis提供的持久層框架包括SQLMap和Data Access Objects(DAO)
MyBatis特性
1)MyBatis是支持定制化SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架
2)MyBatis 避免了幾乎所有的JDBC代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集
3) MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和java的POJO (Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄
4)MyBatis是一個半自動的ORM(Object Relation Mapping)框架(將數(shù)據(jù)庫中的數(shù)據(jù),映射到實體類對象,用戶直接操作實體類對象即可)
MyBatis和其它持久化技術(shù)對比
JDBC
1.SQL夾雜在java代碼中耦合度高,導(dǎo)致硬編碼內(nèi)傷
2.維護不易且實際開發(fā)需求中SQL有變化,頻繁修改的情況多見
3.代碼冗長,開發(fā)效率低
Hibernate和JPA
1.操作簡單,開發(fā)效率高
2.程序中的長難復(fù)雜SQL需要繞過框架
3.內(nèi)部自動生產(chǎn)的SQL,不容易做特殊優(yōu)化
4.基于全映射的全自動框架,大量字段的POJO進行部分映射比較困難
5.反射操作太多,導(dǎo)致數(shù)據(jù)庫性能下降
MyBatis
1.輕量級,性能出色
2.SQL和java編碼分開,功能邊界清晰,java代碼專注業(yè)務(wù)、SQL語句專注數(shù)據(jù)
3.開發(fā)效率稍遜于Hibernate,但是完全能夠接受
創(chuàng)建MyBatis的核心配置文件
習(xí)慣上命名為mybatis-config.xml,這個文件名僅僅是建議,并非強制要求。將來整合Spring之后,這個配置文件可以省略,所以大家操作時可以直接復(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:從一個資源定位地址來讀取配置文件 提供參數(shù)使用: 可以使用 ${參數(shù)名} 進行參數(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僅僅是接口,我們不需要提供實現(xiàn)類。
創(chuàng)建MyBatis的映射文件
MyBatls中的mapper接口相當(dāng)于以前的dao。但是區(qū)別在于,mapper僅僅是接口,我們不需要提供實現(xiàn)類。
創(chuàng)建MyBatis的映射文件
相關(guān)概念:ORM(Object Relationship Mapping)對象關(guān)系映射
.對象:java的實體類對象
.關(guān)系:關(guān)系型數(shù)據(jù)庫
.映射:二者之間的對應(yīng)關(guān)系映射文件的命名規(guī)則->表所對應(yīng)的實體類的類名+Mapper.xml
測試添加功能
SqlSession:代表java程序和數(shù)據(jù)庫之間的會話。(HttpSession是java程序和瀏覽器之間的會話)
SqlSessionFactory:是”生產(chǎn)SqlSession的”工廠。
工廠模式:如果創(chuàng)建某一個對象,使用的過程基本固定,那么我們就可以把創(chuàng)建這個對象的相關(guān)代碼封裝到一個”工廠類”中,以后都使用這個工廠類來”生產(chǎn)”我們需要的對象
示例代碼:
@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接口對象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); //測試功能 int result = mapper.insertUser(); //提交事務(wù) sqlSession.commit(); System.out.println("result:"+result); }
需要手動提交數(shù)據(jù)的原因
優(yōu)化功能
對于簡單的SQL我們沒必要每次都手動提交數(shù)據(jù),因此可以把默認的手動提交,變?yōu)樽詣犹峤?/p>
加入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>
日志的級別
FATA(致命)>ERROR(錯誤)>WARN(警告)>INFO(信息)>DEBUG(調(diào)試)
從左到右打印的內(nèi)容越來越詳細
MyBatis核心配置文件之environment
MyBatis核心配置文件之properties
將數(shù)據(jù)庫信息寫在properties里面,之后在配置文件里面引用
第一步:創(chuàng)建properties文件,并且編寫數(shù)據(jù)庫配置信息
第二步:在配置文件中引入properties文件
第三步:編寫數(shù)據(jù)庫連接池
MyBatis核心配置文件之typeAliases
MyBatis核心配置文件中,標簽的順序:
propertiers?,setting?,typeAliases?,typeHandlers?
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,dataseIdProvider?,mappers?為了避免重復(fù)頻繁的寫在mapper中的resultType寫全類名
所以可以在配置文件中利用typeAliases標簽創(chuàng)建一個簡短的別名
隨后在mapper文件寫sql語句時可以
注意
不區(qū)分大小寫
若不設(shè)置屬性alis
則會有默認別名就是類名不區(qū)分大小寫
MyBatis核心配置文件之mappers
當(dāng)表的數(shù)量太多的時候,需要大量的mapper標簽來引入映射文件,為此我們可以通過引入包的方式來引入映射文件以包為單位引入映射文件
要求:
1.mapper接口所在的包要和映射文件所在的包一致
2.mapper接口要和映射文件的名字一致
思考:映射文件中的SQL該如何拼接?
到此這篇關(guān)于MyBatis 核心配置文件及映射文件的文章就介紹到這了,更多相關(guān)MyBatis 核心配置文件映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?Lombok實現(xiàn)手機號碼校驗的示例代碼
手機號碼校驗通常是系統(tǒng)開發(fā)中最基礎(chǔ)的功能之一,本文主要介紹了Java?Lombok實現(xiàn)手機號碼校驗的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java 后端開發(fā)中Tomcat服務(wù)器運行不了的五種解決方案
tomcat是在使用Java編程語言開發(fā)服務(wù)端技術(shù)使用最廣泛的服務(wù)器之一,但經(jīng)常在開發(fā)項目的時候會出現(xiàn)運行不了的情況,這里總結(jié)出幾種能解決的辦法2021-10-10Java連接數(shù)據(jù)庫oracle中文亂碼解決方案
這篇文章主要介紹了Java連接數(shù)據(jù)庫oracle中文亂碼解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05