日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java回顾:MyBatis开发、配置、标签、封装会话工具

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java回顾:MyBatis开发、配置、标签、封装会话工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、Mybatis框架介紹

1.1 介紹

1.2 優點

1.3 缺點?

1.4 官方網站及框架包下載

1.5??mybatis框架整體架構

1.6? mybatis的ORM(Object Relational Mapping 對象關系映射 )方式?

2、?MyBatis老式入門開發(了解)

2.1 Mybatis框架的核心類

2.2?config.xml核心配置文件:?

2.3?mapper.xml映射文件:

2.4?log4j.properties配置文件:

2.5?測例及流程圖:

2.6?使用mybatis老式的開發模式弊端

3、mybatis的dao層動態代理(掌握)

3.1 核心步驟

3.2 測:建接口UserMapper、綁定接口和映射文件、獲取接口動態代理對象完成查詢

3.3 在3.2基礎上測試mybatis的dao層動態代理

3.4??mybatis的dao層動態代理查詢-原理

3.5?mybatis動態代理小結

4、mybatis核心配置

4.1 properties(屬性)定義全局變量

4.2?settings(設置)標簽駝峰映射、延時加載

4.3?typeAliases標簽類型別名

4.4?typeAliases標簽內置別名

4.5?environments?標簽配置環境

4.6?mappers 標簽映射器

5、myBatis增刪改測例

5.1 insert標簽

5.2 update標簽

5.3 delete標簽

5.4 增刪改查標簽

5.5 mybatis.xml核心配置文件(完整標簽示例)

6、mybatis會話工具


1、Mybatis框架介紹

1.1 介紹

mybatis框架是對JDBC進行封裝,解決了dao層的問題。

?? ?mybatis是Apache軟件基金會下的一個開源項目,前身是iBatis框架。2010年這個項目由apache 軟件基金會遷移到google code下,改名為mybatis。2013年11月又遷移到了github(GitHub 是一個面向開源及私有 軟件項目的托管平臺)。
?? ?MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射(多表)。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。它對 jdbc 的操作數據庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如注冊驅動、創建 connection、創建 statement、手動設置參數、結果集檢索等 jdbc 繁雜的過程代碼。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為數據庫中的記錄。 ?

1.2 優點

  • 簡單易學:mybatis本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個SQL映射文件即可。

  • 使用靈活:Mybatis不會對應用程序或者數據庫的現有設計強加任何影響。SQL語句寫在XML里,便于統一管理和優化。

  • 解除SQL與程序代碼的耦合:通過提供DAO層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易進行單元測試。SQL語句和代碼的分離,提高了可維護性

  • 1.3 缺點?

  • 編寫SQL語句時工作量很大,尤其是字段多、關聯表多時,更是如此。

  • SQL語句依賴于數據庫,導致數據庫移植性差,不能更換數據庫。

  • Mybatis框架還是比較簡陋(半自動化框架),功能尚有缺失,雖然簡化了數據綁定代碼,但是整個底層數據庫查詢實際還是自己寫,工作量比較大,且不太容易適應快速數據庫修改。

  • 1.4 官方網站及框架包下載

    官網地址:mybatis – MyBatis 3 | Introduction

    1.5??mybatis框架整體架構

    1.6? mybatis的ORM(Object Relational Mapping 對象關系映射 )方式?

    Mybatis有兩種映射方式:

    ????????1.通過XML映射;
    ????????2.通過注解;

    2、?MyBatis老式入門開發(了解)

    2.1 Mybatis框架的核心類

    SqlSessionFactoryBuilder 會話工廠構建類 主要用來構建會話工廠的 SqlSessionFactory :會話工廠類 主要用來生產會話對象的; SqlSession:會話對象,底層是對Connection連接對象的封裝;

    數據準備

    數據庫 create table user (id int primary key auto_increment,username varchar(20) not null,birthday date,sex char(1) default '男',address varchar(50) ); insert into user values (null, '大猩猩','1980-10-24','男','湘北高中三年'); insert into user values (null, '櫻木花道','1992-11-12','男','湘北高中一年'); insert into user values (null, '流川楓','1983-05-20','男','湘北高中一年'); insert into user values (null, '宮城良田','1995-03-22','男','湘北高中二年'); insert into user values (null, '三井壽','1980-10-24','男','湘北高中三年'); insert into user values (null, '井上彩子','1995-03-22','女','湘北高中二年'); insert into user values (null, '赤木晴子','1995-03-22','女','湘北高中一年'); 用戶類 public class User {private Integer id;private String username;private Date birthday;private String sex;private String address; }

    2.2?config.xml核心配置文件:?

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//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://127.0.0.1:3306/test0908"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!--引入映射文件--><mappers><mapper resource="mapper/UserMapper.xml"/></mappers> </configuration>

    2.3?mapper.xml映射文件:

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="hhy.UserMapper"><!--命名空間--><!--resultType結果類型:寫實體類路徑(將查詢出的數據轉換為User對象)--><!--執行語句時使用:命名空間名.id,如hhy.UserMapper.findUserById--><select id="findUserById" resultType="hhy.pojo.User">select * from user where id = #{id}</select> </mapper>

    2.4?log4j.properties配置文件:

    可將詳細信息輸出到控制臺,例:sql語句、參數、JDBC連接、autocommit事務狀態等。

    ### 設置Logger輸出級別和輸出目的地 ### log4j.rootLogger=debug, stdout ### 把日志信息輸出到控制臺 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

    2.5?測例及流程圖:

    //myBatis查詢@Testpublic void t10() throws SQLException, IOException {//加載核心配置文件,構建會話工廠String resource="mybatis-config.xml";//路徑名字正確可以直接點擊進入xmlInputStream rs = Resources.getResourceAsStream(resource);SqlSessionFactory build = new SqlSessionFactoryBuilder().build(rs);//獲取會話對象SqlSession sqlSession = build.openSession();//調用查詢api//第一個參數為mapper.xml中的命名空間名.sql的id,第二個參數為想要查詢的數據庫中數據idUser user = sqlSession.selectOne("hhy.UserMapper.findUserById",1);System.out.println("user = " + user);sqlSession.close();rs.close();}

    ?2.6?使用mybatis老式的開發模式弊端

    1)要使用指定的sql必須使用命名空間.id進行字符串拼接,維護性比較差; 2)并且這個sql用多少次,就拼接多少次,維護性比較差;

    3、mybatis的dao層動態代理(掌握)

    ?3.1 核心步驟

    Mybatis存在2種開發方式: 1)舊版本mybatis執行的方式(了解即可); 2)動態代理實現操縱數據庫(掌握);核心步驟 1)接口與xml映射文件綁定;接口名稱與xml映射文件命名空間要一致;接口方法與xml中crud標簽ID要一致; 2)通過SqlSession獲取代理對象;eg:sqlSession.getMapper(接口);

    3.2 測:建接口UserMapper、綁定接口和映射文件、獲取接口動態代理對象完成查詢

    推薦idea安裝插件MyBatisX小鳥,可以在接口和映射文件間跳轉?

    ?1)新建接口 UserMapper

    public interface UserMapper {/*** 根據用戶id查詢用戶信息* @param id*/User findUserById(Integer id); }

    2)將接口和映射文件綁定,在映射文件中書寫SQL語句

    命名空間:此處為UserMapper接口的全限定名,路徑正確可以跳轉
    此處id要與UserMapper接口中對應方法名一致,MyBatisX可以直接跳轉
    resultType結果類型:寫實體類路徑(將查詢出的數據轉換為User對象)

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--命名空間:此處為UserMapper接口的路徑,路徑正確可以跳轉--> <mapper namespace="hhy.mapper.UserMapper"><!--此處id要與UserMapper接口中對應方法名一致,MyBatisX可以直接跳轉--><!--resultType結果類型:寫實體類路徑(將查詢出的數據轉換為User對象)--><select id="findUserById" resultType="hhy.pojo.User">select * from user where id = #{id}</select> </mapper> 說明:接口與xml映射文件進行綁定,分兩步: 1)接口的全限定名稱與xml的命名空間名稱要一致 2)接口中的方法名稱與xml的crud標簽的id要一致;

    ?3.3 在3.2基礎上測試mybatis的dao層動態代理

    //myBatis的dao層動態代理查詢@Testpublic void t2() throws SQLException, IOException {//加載核心配置文件,構建會話工廠String resource="mybatis-config.xml";//路徑名字正確可以直接點擊進入xmlInputStream rs = Resources.getResourceAsStream(resource);SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(rs);//獲取會話對象SqlSession sqlSession = ssf.openSession();//獲取接口代理對象UserMapper mapper = sqlSession.getMapper(UserMapper.class);//調用方法根據id查詢單個數據User user = mapper.findUserById(1);System.out.println("user = " + user);sqlSession.close();rs.close();}

    3.4??mybatis的dao層動態代理查詢-原理

    ?3.5?mybatis動態代理小結

    1)導入依賴的jar mybatis.jar jdbc驅動包 log4j.jar 2)定義pojo類型; 3)定義操縱pojo類的接口 4)定義xml映射文件,然后與接口進行綁定4.1 xml的命名空間與接口的全限定名稱要一致;4.2 xml中的crud的標簽id與接口中的方法名稱要一致; 5)配置核心配置文件 (1.配置數據源 2.加載xml映射文件) 6)通過SqlSessionFactoryBuilder類加載核心配置文件,構建會話工廠; 7)通過會話工廠獲取會話對象; 8)通過會話對象調用getMapper(接口.class)獲取代理對象(正常使用接口完成數據庫的操作) 9)釋放資源,關閉連接(session.close())

    4、mybatis核心配置

    ????????mybatis-config.xml,是MyBatis的全局配置文件,包含全局配置信息,如數據庫連接參數、插件等。整個框架中只需要一個即可。 ?

    參考:https://mybatis.org/mybatis-3/zh/configuration.html

    ?說明:上述標簽在實際使用過程中,要嚴格遵循使用順訊,否則報錯;

    4.1 properties(屬性)定義全局變量

    1、通過子標簽property設置屬性,內部定義(不推薦);
    2、加載外部的java資源文件(properties文件),外部引用(掌握);

    ?1)兩種使用<properties>標簽的方式

    方式1(了解即可): 1、通過properties的子標簽設置屬性; 2、使用${key}獲取設置的屬性值;方式2(掌握): 1.通過properties標簽 resource屬性引入加載外部properties文件

    ?2)練習

    方式1配置mayBatis-config.xml(了解即可)

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><properties><!--此處name對應dataSource標簽中的value,使用${}獲取值--><property name="driverClass" value="com.mysql.jdbc.Driver"/><property name="dburl" value="jdbc:mysql://127.0.0.1:3306/test0908"/><property name="username" value="root"/><property name="passwd" value="123456"/></properties><environments default="development"><!--配置數據庫環境--><environment id="development"><transactionManager type="JDBC"/><!--數據源--><dataSource type="POOLED"><property name="driver" value="${driverClass}"/><property name="url" value="${dburl}"/><property name="username" value="${username}"/><property name="password" value="${passwd}"/></dataSource></environment></environments><!--引入映射文件--><mappers><mapper resource="hhy/mapper/UserMapper.xml"/></mappers> </configuration>

    方式2配置mayBatis-config.xml(掌握

    創建jdbc.properties文件

    ##配置參數 jdbc.driverClass=com.mysql.jdbc.Driver jdbc.dburl=jdbc:mysql://127.0.0.1:3306/test0908 jdbc.userName=root jdbc.password=123456

    ?引入jdbc.properties文件,直接取其中的值。

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- 引入外部的properties文件 --><properties resource="jdbc.properties"/><environments default="development"><!--配置數據庫環境--><environment id="development"><transactionManager type="JDBC"/><!--數據源--><dataSource type="POOLED"><!--加載引入外部的properties文件的value值--><property name="driver" value="${jdbc.driverClass}"/><property name="url" value="${jdbc.dburl}"/><property name="username" value="${jdbc.userName}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--引入映射文件--><mappers><mapper resource="hhy/mapper/UserMapper.xml"/></mappers> </configuration>

    4.2?settings(設置)標簽駝峰映射、延時加載

    settinngs是 MyBatis 中極為重要的調整設置,它們會改變 MyBatis 的運行時行為。

    ????????settings參數有很多,先測試駝峰匹配mapUnderscoreToCamelCase,就是映射下劃線到駝峰式命名。

    數據準備:修改數據庫username字段名稱為user_name,并建立與pojo映射關系,配置駝峰映射,若不配置就拿不到相應字段值

    -- 修改字段sql alter table user change username user_name varchar(30); public class User {//表:user_name --->類:userName/usernameprivate String username;...; }

    開啟駝峰映射,且settings標簽要在properties標簽后不然報錯

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- 引入外部的properties文件 --><properties resource="jdbc.properties"/><!--開啟駝峰映射--><settings><!--作用:表:user_name 類:userName/username 自動映射--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><environments default="development">...</environments><!--引入映射文件--><mappers><mapper resource="hhy/mapper/UserMapper.xml"/></mappers> </configuration>

    4.3?typeAliases標簽類型別名

    ????????類型別名是給類的全限定名稱(包名.類名) 取一個短名稱。存在的意義僅在于用來減少類完全限定名的冗余

    ?可以通過設置一些短名來代替全限定名,有兩種方式:

    但是使用typeAliases標簽會和有些idea插件沖突,導致mapper.xml及mapper.java中的某部分爆紅,能運行但是比較惡心,想解決需卸載free mab...插件。

    例:

    mybatis.xml

    省略... <configuration><!-- 引入外部的properties文件 --><properties resource="jdbc.properties"/><!--開啟駝峰映射--><settings><!--作用:表:user_name 類:userName/username 自動映射--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><typeAliases><!--方式1:取別名,逐個取別名--> <!-- <typeAlias type="hhy.pojo.User" alias="user"/>--><!--如果有其他類,繼續書寫,比較麻煩--><!--方式2:package name指定要取別名的包名,為包下所有類自動取別名--><package name="hhy.pojo"/></typeAliases><environments default="development">省略...</environments><!--引入映射文件--><mappers><mapper resource="hhy/mapper/UserMapper.xml"/></mappers> </configuration>

    mapper.xml:

    <mapper namespace="hhy.mapper.UserMapper"><!--此處id要與UserMapper接口中對應方法名一致,MyBatisX可以直接跳轉--><!--resultType結果類型:寫實體類路徑(將查詢出的數據轉換為User對象)--><select id="findUserById" resultType="User"><!--結果類型自動生成,user/User都均可-->select id,user_name,birthday,sex,address from user where id = #{id}</select> </mapper>

    4.4?typeAliases標簽內置別名

    ????????常見的 Java 類型內建的相應的類型別名。均不區分大小寫,注意對基本類型名稱重復采取的特殊命名風格。

    ????????基本類型別名是_基本類型名稱(不加_也可以),包裝類型別名時包裝類首字母小寫(大寫也可以);

    別名映射的類型
    _bytebyte
    _longlong
    _shortshort
    _intint
    _integerint
    _doubledouble
    _floatfloat
    _booleanboolean
    stringString
    byteByte
    longLong
    shortShort
    intInteger
    integerInteger
    doubleDouble
    floatFloat
    booleanBoolean
    dateDate
    decimalBigDecimal
    bigdecimalBigDecimal
    objectObject
    mapMap
    hashmapHashMap
    listList
    arraylistArrayList
    collectionCollection
    iteratorIterator

    測例:根據id查詢用戶姓名返回String類型、根據name查詢用戶id返回int類型。

    mapper.xml:

    省略... <mapper namespace="hhy.mapper.UserMapper"><!--resultType結果類型:包裝類首字母小寫--><select id="getNameById" resultType="String"><!--string、String均可-->select user_name from user where id = #{id}</select><!--resultType結果類型:基本類型加‘_’--><select id="getIdByName" resultType="int"><!--_int、int、Int均可-->select id from user where user_name = #{userName}</select> </mapper> @Testpublic void t3() throws SQLException, IOException {//加載核心配置文件,構建會話工廠InputStream rs = Resources.getResourceAsStream("mybatis03.xml");SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(rs);//獲取會話對象SqlSession sqlSession = ssf.openSession();//獲取接口代理對象UserMapper mapper = sqlSession.getMapper(UserMapper.class);//調用方法根據id查詢單個數據System.out.println("name = " + mapper.getNameById(1));System.out.println("櫻木花道 = " + mapper.getIdByName("櫻木花道"));sqlSession.close();rs.close();}

    4.5?environments?標簽配置環境

    MyBatis 可以配置成適應多種環境,如開發、測試和生產環境需要有不同的配置; 但每個 SqlSessionFactory 實例只能選擇其一,需進行選擇。實際使用場景下,更多的是選擇使用spring來管理數據源,來做到環境的分離。 父標簽: environments(環境配置)子標簽:environment(環境變量)transactionManager(事務管理器)dataSource(數據源)

    例:

    xml配置多環境數據源,指定development為默認環境運行,在SqlSessionFactoryBuilder的build方法下指定要切換數據源的標識,覆蓋默認配置build(rs, "test"),選用test環境。

    省略... <configuration><!-- 引入外部的properties文件 --><properties resource="jdbc.properties"/><!--開啟駝峰映射--><settings><!--作用:表:user_name 類:userName/username 自動映射--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><typeAliases><!--方式2:package name指定要取別名的包名,為包下所有類自動取別名--><package name="hhy.pojo"/></typeAliases><!--現有三個環境,默認development--><environments default="development"><!--配置數據庫環境--><environment id="development">省略...</environment><environment id="test"><transactionManager type="JDBC"/><!--數據源--><dataSource type="POOLED"><!--加載引入外部的properties文件的value值--><property name="driver" value="${jdbc.driverClass}"/><property name="url" value="${jdbc.dburl}"/><property name="username" value="${jdbc.userName}"/><property name="password" value="${jdbc.password}"/></dataSource></environment><environment id="online">省略...</environment></environments>省略... </configuration>

    代碼:

    @Testpublic void t3() throws SQLException, IOException {//加載核心配置文件,構建會話工廠String resource = "mybatis04.xml";//路徑名字正確可以直接點擊進入xmlInputStream rs = Resources.getResourceAsStream(resource);//不指定就走默認數據源 // SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(rs);//在build方法下指定要切換數據源的標識,覆蓋默認配置SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(rs, "test");//獲取會話對象SqlSession sqlSession = ssf.openSession();//獲取接口代理對象UserMapper mapper = sqlSession.getMapper(UserMapper.class);//調用方法final int 櫻木花道 = mapper.getIdByName("櫻木花道");System.out.println("櫻木花道 = " + 櫻木花道);sqlSession.close();rs.close();}

    4.6?mappers 標簽映射器

    mappers(映射器):UserMapper.xml====>UserMapper.java接口關聯。

    作用:維護接口和映射文件之間的關系.使用方式: 1、加載XML映射文件,關聯UserMapper.java接口 【1】<mapper resource="UserMapper.xml"/> 從src下加載映射文件; 【2】<mapper url=""/> 從本地磁盤中加載映射文件,但是需要添加file:///協議 說明:如果項目采用基于xml的開發模式,建議使用方式1開發;2、加載接口,關聯映射文件 條件:1、接口名和映射文件名保持一致;2、路徑保持一致; 【3】class:加載單獨的接口:<mapper class="hhy.mapper.UserMapper"/> 【4】批量加載class:<package name="hhy.mapper"/> 說明:如果基于注解開發的開發的話,推薦使用方式4開發

    推薦:

    <mappers><!--通過resource屬性加載工程下相對路徑下的映射文件--><mapper resource="mapper/UserMapper.xml"/></mappers><!--package表示通過掃包加載接口,然后獲取接口名稱,就獲取了xml映射文件名稱name屬性指定接口的路徑--><package name="hhy.mapper"/>前提條件: 1.接口與映射文件名稱必須相同; 2.接口與映射文件路徑必須相同; 3.映射文件中的namespace必須與接口的全限定名稱一致;

    5、myBatis增刪改測例

    5.1 insert標簽

    屬性說明是否必須
    id這條SQL語句的唯一標識,和接口的方法名一致

    說明:#{username},#{birthday},#{sex},#{address} 大括號里面的值必須和pojo的實體類User類中的屬性名一致,否則會報錯。

    注意事項:Mybatis默認事務手動提交,可設置事務自動提交:

    SqlSession sqlSession = sqlSessionFactory.openSession(true);

    5.2 update標簽

    屬性說明是否必須
    idSQL語句的唯一標識,和接口的方法名一致

    5.3 delete標簽

    屬性說明是否必須
    idSQL語句的唯一標識,和接口的方法名一致

    5.4 增刪改查標簽

    1.select<select id="對應接口中的方法名" resultType="pojo名默認首字符小寫/_基本類型/jdk對象類型小寫">select * from table where id=#{任意變量}</select> 2.insert<insert id="xx">insert into table values(null,#{對應pojo中屬性名稱},....)</insert> 3.update<update id="xxx">update table set 字段1=#{對應pojo中屬性名稱},.... where id=#{id}</update> 4.delete<delete id="xxx">delete from table where id=#{id}</delete>

    5.5 mybatis.xml核心配置文件(完整標簽示例)

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- 引入外部的properties文件 --><properties resource="jdbc.properties"/><!--開啟駝峰映射--><settings><!--作用:表:user_name 類:userName/username 自動映射--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><typeAliases><!--方式1:取別名,逐個取別名--> <!-- <typeAlias type="hhy.pojo.User" alias="user"/>--><!--如果有其他類,繼續書寫--><!--方式2:package name指定要取別名的包名,為包下所有類自動取別名--><package name="hhy.pojo"/></typeAliases><!--現有三個環境,默認development--><environments default="development"><!--配置數據庫環境--><environment id="development"><transactionManager type="JDBC"/><!--數據源--><dataSource type="POOLED"><!--省略...--></dataSource></environment><environment id="test"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--加載引入外部的properties文件的value值--><property name="driver" value="${jdbc.driverClass}"/><property name="url" value="${jdbc.dburl}"/><property name="username" value="${jdbc.userName}"/><property name="password" value="${jdbc.password}"/></dataSource></environment><environment id="online"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--省略...--></dataSource></environment></environments><!--引入映射文件--><mappers><mapper resource="hhy/mapper/UserMapper.xml"/></mappers> </configuration>

    6、mybatis會話工具

    public class MyBatisUtil {//全局維護一個會話工廠private static SqlSessionFactory ssf;private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<>();//在靜態代碼塊中加載mybatis核心配置文件,初始化SqlSessionFactorystatic {String resource = "mybatis03.xml";InputStream inputStream = null;try {inputStream = Resources.getResourceAsStream(resource);} catch (IOException e) {e.printStackTrace();}ssf = new SqlSessionFactoryBuilder().build(inputStream);}//封裝獲取動態代理對象的方法public static <T>T getMapper(Class<T> tClass) {//獲取會話對象SqlSession sqlSession = getSqlSession();//獲取接口代理對象T mapper = sqlSession.getMapper(tClass);return mapper;}//獲取sqlSession對象public static SqlSession getSqlSession() {SqlSession sqlSession = threadLocal.get();if (sqlSession==null){sqlSession = ssf.openSession();//放回線程中 通過threadLocal為每一個線程都維護一個私有的會話對象,防止出現并發問題threadLocal.set(sqlSession);}return sqlSession;}//關閉資源public static void close() {//關閉會話對象SqlSession sqlSession = threadLocal.get();if (sqlSession!=null){sqlSession.close();}}//事務提交public static void commit() {SqlSession sqlSession = threadLocal.get();if (sqlSession!=null){sqlSession.commit();}}//事務回滾public static void rollback(){SqlSession sqlSession = threadLocal.get();if(sqlSession!=null){sqlSession.rollback();}} }

    總結

    以上是生活随笔為你收集整理的java回顾:MyBatis开发、配置、标签、封装会话工具的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。