最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis的mapper標(biāo)簽 namespace屬性用法說明

 更新時(shí)間:2021年09月30日 10:23:49   作者:hugh Lee  
這篇文章主要介紹了Mybatis的mapper標(biāo)簽 namespace屬性用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mybatis mapper標(biāo)簽namespace屬性說明

在mybatis中,映射文件中的namespace是用于綁定Dao接口的,即面向接口編程。

當(dāng)你的namespace綁定接口后,你可以不用寫接口實(shí)現(xiàn)類,mybatis會(huì)通過該綁定自動(dòng)幫你找到對應(yīng)要執(zhí)行的SQL語句,如下:

假設(shè)定義了IArticeDAO接口

public interface IArticleDAO
{
   List<Article> selectAllArticle();
}

對于映射文件如下:

<mapper namespace="IArticleDAO">
    <select id="selectAllArticle" resultType="article">
            SELECT t.* FROM T_article t WHERE t.flag = '1' ORDER BY t.createtime DESC
     </select>

請注意接口中的方法與映射文件中的SQL語句的ID一一對應(yīng) 。

則在代碼中可以直接使用IArticeDAO面向接口編程而不需要再編寫實(shí)現(xiàn)類。

MyBatis的命名空間(我們以下圖的文件結(jié)構(gòu)來說明)

MyBatis的命名空間說的是POJO的XXx.xml文件中的<mapper namespace=”” />,主要是跟三個(gè)地方有關(guān)系,

  • 第一個(gè)是Configuration.xml的mappers屬性
  • 第二個(gè)是POJO的mapper接口如EmployeeMapper的類路徑
  • 第三個(gè)是DAO程序中的session.getConfiguration().addMapper(EmployeeMapper.class)

下面我來說一下他們?nèi)齻€(gè)之間的關(guān)系,我們

1)當(dāng)只使用XML(不使用Anotation)的來配置mapper接口時(shí)

就是我們把sql配置在EmployeeMap.xml中時(shí),若我們把namespace指明namespace設(shè)置為mapper接口的路徑,即<mapper namespace="com.wildrain.mapper.EmployeeMapper">時(shí),這樣我們在程序中使用MyBatis來進(jìn)行CRUD時(shí), session.getConfiguration().addMapper(EmployeeMapper.class)這段代碼可以不用寫。我們來具體看一下這個(gè)三個(gè)地方的代碼形式。

Configuration.xml的mappers
<typeAliases>
       <typeAlias alias="Employee" type="com.wildrain.domain.Employee" />
    </typeAliases>
Namespace
<mapper namespace="com.wildrain.mapper.EmployeeMapper">

程序代碼:

    @Test
    public void testGetAllEmployees(){
       SqlSessionFactory sqlSessionFactory =  MyBatisUtil.getSessionFactory();
       SqlSession session = sqlSessionFactory.openSession();
       try {
           EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
           List<Employee> ems = mapper.getAllEmployees();
           for(Employee e:ems){
              System.out.println(e);
           }
       } finally {
           session.close();
       }
}

若我們在employee.xml中的namespace是任意取的名字,而不是EmployeeMapper.java的類路徑名,那么當(dāng)我們在進(jìn)行測試時(shí),必須要添加一行代碼session.getConfiguration().addMapper(EmployeeMapper.class)進(jìn)行注冊,下代碼如下:

@Test
    public void testGetAllEmployees(){
       SqlSessionFactory sqlSessionFactory =  MyBatisUtil.getSessionFactory();
       SqlSession session = sqlSessionFactory.openSession();
       session.getConfiguration().addMapper(EmployeeMapper.class);
       try {
           EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
           List<Employee> ems = mapper.getAllEmployees();
           for(Employee e:ems){
              System.out.println(e);
           }
       } finally {
           session.close();
       }
}

2)當(dāng)使用注解時(shí)

為了減少配制xml的工作量,可以把Employee.xml省略,而把相應(yīng)配制通過注解的形式寫到EmployeeMapper.java的文件中,如下所示

final String getAllEmployees = "SELECT E.id, name, type, salay, time "+
       "FROM employee E "+
       "left join register r on r.eid = E.id "+
    "left join time t on t.eid = E.id";
@Select(getAllEmployees)
    @TypeDiscriminator(column = "type",
           cases={   
           @Case(value="1",type=RegisterEmployee.class,results={
              @Result(property="salay")
           }) ,
           @Case(value="2",type=TimeEmployee.class,results={
              @Result(property="time")
           })
})

這樣Configuration.xml中就不需要設(shè)置<mappers/>了,此時(shí)在測試程序時(shí)就必須加一行

session.getConfiguration().addMapper(EmployeeMapper.class);

的代碼進(jìn)行注冊,這樣在每一次CRUD時(shí)都需要添加一行這樣的代碼。

還不如在建立一個(gè)空的Employee.xml文件,然后像上面一樣設(shè)置好namespace,從而不用輸入那一行代碼。

上面的說明針對的是,僅針對使用mybats動(dòng)態(tài)代理時(shí)的情況。寫得比較亂,以后有時(shí)間再改。

Mybatis中namespace的作用

在mybatis中,映射文件中的namespace是用于綁定Dao接口的,即面向接口編程。

當(dāng)你的namespace綁定接口后,你可以不用寫接口實(shí)現(xiàn)類,mybatis會(huì)通過該綁定自動(dòng) 幫你找到對應(yīng)要執(zhí)行的SQL語句

ItemsCustomMapperxml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.itcast.ssm.mapper.ItemsMapperCustom" >
   <!-- 定義商品查詢的sql片段,就是商品查詢條件 -->
   <sql id="query_items_where">
    <!-- 使用動(dòng)態(tài)sql,通過if判斷,滿足條件進(jìn)行sql拼接 -->
    <!-- 商品查詢條件通過ItemsQueryVo包裝對象 中itemsCustom屬性傳遞 -->
        <if test="itemsCustom!=null">
            <if test="itemsCustom.name!=null and itemsCustom.name!=''">
                items.name LIKE '%${itemsCustom.name}%'
            </if>
        </if>
   </sql>
    <!-- 商品列表查詢 -->
    <!-- parameterType傳入包裝對象(包裝了查詢條件)
        resultType建議使用擴(kuò)展對象
     -->
    <select id="findItemsList" parameterType="cn.itcast.ssm.po.ItemsQueryVo"
         resultType="cn.itcast.ssm.po.ItemsCustom">
        SELECT items.* FROM items  
        <where>
            <include refid="query_items_where"></include>
        </where>
    </select>
</mapper>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Bean的管理與SpringBoot自動(dòng)裝配原理解讀

    Bean的管理與SpringBoot自動(dòng)裝配原理解讀

    在SpringBoot項(xiàng)目中,啟動(dòng)時(shí)自動(dòng)創(chuàng)建IOC容器并初始化bean對象,支持通過依賴注入獲取,Bean可以通過name或類型獲取,支持單例和非單例等多種作用域,對于第三方Bean,推薦在配置類中用@Bean標(biāo)識(shí)方法進(jìn)行定義
    2024-11-11
  • Java咖啡館(1)——嘆咖啡

    Java咖啡館(1)——嘆咖啡

    這篇文章主要給大家介紹了關(guān)于Java咖啡館之嘆咖啡,需要的朋友可以參考下
    2006-12-12
  • springboot如何查找配置文件路徑的順序和其優(yōu)先級別

    springboot如何查找配置文件路徑的順序和其優(yōu)先級別

    此文是在工作中遇到的關(guān)于springboot配置文件的問題,在網(wǎng)上查閱資料和自己測試之后記錄的,以便日后查閱。希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java如何利用Easyexcel動(dòng)態(tài)導(dǎo)出表頭列

    Java如何利用Easyexcel動(dòng)態(tài)導(dǎo)出表頭列

    這篇文章主要介紹了Java利用Easyexcel動(dòng)態(tài)導(dǎo)出表頭列的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 使用IDEA開發(fā)配置Java Web的初始化過程

    使用IDEA開發(fā)配置Java Web的初始化過程

    該教程使用idea開發(fā)工具初始化javaweb項(xiàng)目,該運(yùn)行在tomcat服務(wù)器上通過配置項(xiàng)目環(huán)境變量保證tomcat正常啟動(dòng),具體操作配置教程參考下本文
    2021-06-06
  • Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹

    Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹,memento是一個(gè)保存另外一個(gè)對象內(nèi)部狀態(tài)拷貝的對象,這樣以后就可以將該對象恢復(fù)到原先保存的狀態(tài),需要的朋友可以參考下
    2015-03-03
  • Java實(shí)現(xiàn)簡單的抽牌游戲

    Java實(shí)現(xiàn)簡單的抽牌游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單的抽牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Java集合中contains方法的效率對比分析

    Java集合中contains方法的效率對比分析

    這篇文章主要介紹了Java集合中contains方法的效率對比分析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解

    Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解

    動(dòng)態(tài)SQL就是動(dòng)態(tài)的生成SQL。接下來通過本文給大家介紹Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2016-09-09
  • Java多線程中的Executor框架解析

    Java多線程中的Executor框架解析

    這篇文章主要介紹了Java多線程中的Executor框架解析,Executor 框架是 Java5 之后引進(jìn)的,在 Java 5 之后,通過 Executor 來啟動(dòng)線程比使用 Thread 的 start 方法更好,除了更易管理,效率更好,需要的朋友可以參考下
    2023-12-12

最新評論

红桥区| 安庆市| 松滋市| 堆龙德庆县| 阳谷县| 文昌市| 集贤县| 贵南县| 鲁山县| 崇信县| 沧州市| 金乡县| 周至县| 百色市| 易门县| 达孜县| 宁安市| 文安县| 阳高县| 安国市| 赣榆县| 芮城县| 和平区| 广西| 达拉特旗| 灵璧县| 宁化县| 丹东市| 顺平县| 盐亭县| 淮阳县| 阳城县| 册亨县| 福鼎市| 鄂托克旗| 洪雅县| 崇仁县| 龙海市| 锡林浩特市| 宁南县| 东丽区|