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

Mybatis映射文件規(guī)則實例詳解

 更新時間:2022年04月20日 09:38:51   作者:Java的學習之路  
在映射文件當中,mapper元素是映射文件的根元素,其他的標簽都是它的子元素,下面這篇文章主要給大家介紹了關于Mybatis映射文件規(guī)則的相關資料,需要的朋友可以參考下

在說明映射文件規(guī)則之前,先來回顧一下ORM相關概念。

1.ORM概念

ORM(Object Relationship Mapping)對象關系映射

對象:Java的實體類對象

關系:關系型數據庫

映射:二者之間的對應關系

字段名和屬性名要一一對應才可以,它們的名字要相同,底層調用的是反射機制

Java概念數據庫概念
屬性列,字段
對象記錄

2.映射文件命名規(guī)則

表對應的實體類的類名+Mapper.xml

舉例:假如數據庫的表的名字是t_user,它對應的實體類是User,那么對應的映射文件為UserMapper.xml

一個映射文件對應一個實體類,對應一張表的操作,調用Mapper中的方法就是來執(zhí)行SQL

Mybatis映射文件用來寫SQL語句,訪問和操作表的數據

Mybatis映射文件存放位置是src/main/resources/mappers目錄下面

3.Mybatis的兩個一致

Mybatis可以面向接口操作數據,如果我們以包為單位引入映射文件,需要有兩個一致

① 映射文件的namespace要和mapper接口的全類名一致

當調用Mapper接口中的方法,它會先根據Mapper接口的全類名去找到映射文件,然后根據方法名去找到對應的SQL語句

②映射文件中SQL語句的id要和mapper接口中的方法名一致

4.總結創(chuàng)建mybatis的步驟

  1. 創(chuàng)建maven工程
  2. 在pom.xml中引入相關依賴,比如數據庫驅動,mybatis,junit單元測試,log4j日志
  3. 在src/main/java建包
    1. 3.1 在pojo包下面創(chuàng)建對應的實體類
      注:實體類對應數據庫表的記錄
      也就是說數據庫查詢出來的結果要以什么方式返回
    2. 3.2 在mapper包下面創(chuàng)建mapper接口,里面定義操作數據庫中表的相關方法
  4. 在resources目錄下面建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代表核心配置文件-->
<configuration>
<!--    The content of element type "configuration" must match "
(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,reflectorFactory?,plugins?,environments?,
  databaseIdProvider?,mappers?)".-->
<!--    <typeAliases></typeAliases>-->
<!--    因為后面要查詢的語句很多,每一個查詢語句要對應一個實體類,那么我們在指定返回類型的時候-->
<!--    要寫類的全路徑,路徑可能很長,這樣就很麻煩,我們就可以使用標簽-->
   <properties resource="jdbc.properties"/>
<!--    設置類型別名-->
   <typeAliases>
<!--        typeAlias:設置某個類型的別名
           屬性:
               type:設置需要設置別名的類型
               alias:設置某個類型的別名,如果不設置該屬性,則這個類型有默認的別名,而且類名不區(qū)分大小寫
-->
       <typeAlias type="com.atguigu.mybatis.mybatis.pojo.User" alias="User"></typeAlias>
<!--       以包為單位,把包下面的所有類型設置成為默認的類型別名,——類名不區(qū)分大小寫-->
       <package name="com.atguigu.mybatis.pojo"/>
   </typeAliases>
   <!--    環(huán)境可以有多個,我們用默認的環(huán)境-->
   <!--    enviments:配置連接數據庫的環(huán)境
              id:表示連接數據庫環(huán)境的唯一標識,不能重復-->
   <environments default="development">
       <environment id="development">
           <!--            transactionManager設置事務管理方式
                        type=DBC|MANAGED
                        JDBC:表示在當前環(huán)境中,執(zhí)行SQL時,使用的是JDBC中原生的事務管理方式,事務的提交或回滾需要手動處理
                        MANAGED:表示被誰管理,例如Spring-->
           <transactionManager type="JDBC"/>
<!--            type用來設置數據源的類型
type=POOLED|UNPOOLED|JNDI
POOLED:表示使用的是數據庫連接池緩存數據庫連接
UNPOOLED:表示不使用數據庫連接池
JNDI:表示使用的是上下文中的數據源-->
           <dataSource type="POOLED">
               <property name="driver" value="${jdbc.driver}"/>
               <property name="url" value="${jdbc.url}"/>
               <property name="username" value="${jdbc.username}"/>
               <property name="password" value="${jdbc.password}"/>
               <!--                數據源就是連接是連接數據庫的信息-->
           </dataSource>
       </environment>
       <environment id="test">
           <transactionManager type="JDBC"/>
           <!--            type=POOLED表示使用數據庫連接池-->
           <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>
   <!--    引入映射文件-->
   <!--    每一個Mapper.xml都需要在Mybatis的核心配置文件中注冊-->
<!--    mapper文件的位置是為了找到要執(zhí)行的sql語句
resources屬性指定的是mapper文件的路徑
這個路徑是從target/classes路徑開始的
用/作為分隔符-->
   <mappers>
<!--        <mapper resource="mappers/UserMapper.xml"/>-->
<!--        這個時候,這個包里面的所有配置文件都會被引入-->
<!--        以包為單位引入映射文件
            要求:
            1.mapper接口所在的包要和映射文件所在的包一致
            2.mapper接口要和映射文件的名字一致
                  -->
       <package name="com.atguigu.mybatis.mapper"/>
   </mappers>
</configuration>

4.在resources目錄下面建立mapper映射文件

5.測試

   //加載核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //獲取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //獲取SqlSessionFactory 工廠模式
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //獲取mybatis操作的會話對象
        //sqlSession默認是不自動提交事務的,如果我們寫上參數true,就代表自動提交
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //獲取mapper接口的對象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.insertUser();
        //提交事務
//        sqlSession.commit();
        System.out.println("結果:"+i);

補充:MyBatis_自定義結果映射規(guī)則

自定義resultMap,實現高級結果集映射

在EmployeeMapperPlus.xml中有:

package com.atguigu.mybatis.dao;
import java.util.List;
import com.atguigu.mybatis.bean.Employee;
public interface EmployeeMapperPlus {
? ? public Employee getEmpById(Integer id);
}

在EmployeeMapperPlus.xml中實現方法:

? ? <!--自定義某個javaBean的封裝規(guī)則
? ? type:自定義規(guī)則的Java類型
? ? id:唯一id方便引用
? ? ? -->
? ? <resultMap type="com.atguigu.mybatis.bean.Employee" id="MySimpleEmp">
? ? ? ? <!--指定主鍵列的封裝規(guī)則
? ? ? ? id用來定義主鍵,會底層有優(yōu)化;
? ? ? ? column:指定哪一列
? ? ? ? property:指定對應的javaBean屬性
? ? ? ? ? -->
? ? ? ? <id column="id" property="id"/>
? ? ? ? <!-- result定義普通列封裝規(guī)則 -->
? ? ? ? <result column="last_name" property="lastName"/>
? ? ? ? <!-- 其他不指定的列會自動封裝:我們只要寫resultMap就把全部的映射規(guī)則都寫上。 -->
? ? ? ? <result column="email" property="email"/>
? ? ? ? <result column="gender" property="gender"/>
? ? </resultMap>

? ? <!-- resultMap:自定義結果集映射規(guī)則; ?-->
? ? <!-- resultMap與resultType只能二選一 ?-->
? ? <!-- public Employee getEmpById(Integer id); -->
? ? <select id="getEmpById" ?resultMap="MySimpleEmp">
? ? ? ? select * from tbl_employee where id=#{id}
? ? </select>

測試:

先把駝峰命名法關了<setting name="mapUnderscoreToCamelCase" value="false"/>,或者注釋掉也可以

@Test
    public void test05() throws IOException{
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession openSession = sqlSessionFactory.openSession();
        try{
            EmployeeMapperPlus mapper = openSession.getMapper(EmployeeMapperPlus.class);
            Employee empById = mapper.getEmpById(1);
            System.out.println(empById);
        }finally{
            openSession.close();
        }
    }

即使把駝峰命名關了還是可以按照我們自定義的規(guī)則封裝成功的

總結

到此這篇關于Mybatis映射文件規(guī)則的文章就介紹到這了,更多相關Mybatis映射文件規(guī)則內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于Java實現中文分詞系統(tǒng)的示例代碼

    基于Java實現中文分詞系統(tǒng)的示例代碼

    這篇文章主要為大家詳細介紹了如何利用Java語言實現一個簡易的中文分詞系統(tǒng),文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-07-07
  • Springboot整合Redis的詳細教程分享

    Springboot整合Redis的詳細教程分享

    這篇文章主要為大家詳細介紹了如何利用SpringBoot整合Redis,文中的示例代碼講解詳細,具有很好的參考價值,希望對大家有所幫助
    2022-08-08
  • Java日常練習題,每天進步一點點(53)

    Java日常練習題,每天進步一點點(53)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • Java數組擴容實例代碼

    Java數組擴容實例代碼

    這篇文章主要介紹了Java數組擴容實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2017-11-11
  • Java Swing中JTable渲染器與編輯器用法示例

    Java Swing中JTable渲染器與編輯器用法示例

    這篇文章主要介紹了Java Swing中JTable渲染器與編輯器用法,結合實例形式較為詳細的分析了Swing中JTable渲染器與編輯器的功能、使用方法及相關注意事項,需要的朋友可以參考下
    2017-11-11
  • java簡單快速排序實例解析

    java簡單快速排序實例解析

    這篇文章主要為大家詳細介紹了java簡單快速排序實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Spring中使用LocalDateTime、LocalDate等參數作為入參

    Spring中使用LocalDateTime、LocalDate等參數作為入參

    這篇文章主要介紹了Spring中使用LocalDateTime、LocalDate等參數作為入參,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • InteliJ IDEA 設置eclipse快捷鍵 的圖文教程

    InteliJ IDEA 設置eclipse快捷鍵 的圖文教程

    本文通過圖文并茂的形式給大家介紹了InteliJ IDEA 設置eclipse快捷鍵 ,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下
    2018-06-06
  • Springboot整合Shiro實現登錄與權限校驗詳細解讀

    Springboot整合Shiro實現登錄與權限校驗詳細解讀

    本文給大家介紹Springboot整合Shiro的基本使用,Apache?Shiro是Java的一個安全框架,Shiro本身無法知道所持有令牌的用戶是否合法,我們將整合Shiro實現登錄與權限的驗證
    2022-04-04
  • Java對比兩個實體的差異分析

    Java對比兩個實體的差異分析

    這篇文章主要介紹了Java對比兩個實體的差異分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論