`

Mybatis的namespace问题说明

    博客分类:
  • Java
阅读更多

 

<!--[if !supportLists]-->1.       <!--[endif]-->MyBatis的命名空间(我们以下图的文件结构来说明)

 

MyBatis的命名空间说的是POJO的XXx.xml文件中的<mapper namespace=”” />,主要是跟三个地方有关系,

第一个是Configuration.xml的mappers属性

第二个是POJO的mapper接口如EmployeeMapper的类路径

第三个是DAO程序中的session.getConfiguration().addMapper(EmployeeMapper.class)

下面我来说一下他们三个之间的关系,我们

1)当只使用XML(不使用Anotation)的来配置mapper接口时,就是我们把sql配置在EmployeeMap.xml中时,若我们把namespace指明namespace设置为mapper接口的路径,即<mapper namespace="com.wildrain.mapper.EmployeeMapper">时,这样我们在程序中使用MyBatis来进行CRUD时, session.getConfiguration().addMapper(EmployeeMapper.class)这段代码可以不用写。我们来具体看一下这个三个地方的代码形式。

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的类路径名,那么当我们在进行测试时,必须要添加一行代码session.getConfiguration().addMapper(EmployeeMapper.class)进行注册,下代码如下:

@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)当使用注解时,为了减少配制xml的工作量,可以把Employee.xml省略,而把相应配制通过注解的形式写到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中就不需要设置<mappers/>了,此时在测试程序时就必须加一行session.getConfiguration().addMapper(EmployeeMapper.class);的代码进行注册,这样在每一次CRUD时都需要添加一行这样的代码。还不如在建立一个空的Employee.xml文件,然后像上面一样设置好namespace,从而不用输入那一行代码。

转自:http://wildrain.iteye.com/blog/1236251

分享到:
评论

相关推荐

    MyBatis3 API 中文文档

    MyBatis作为一款优秀的持久层框架,主要解决了Java应用与数据库交互的问题。它支持普通的SQL查询、存储过程和高级映射,可以用来处理复杂的SQL,例如联表查询等,并且支持动态SQL语句,这在处理有较多条件判断的场景...

    Mybatis XML配置信息说明

    1. **namespace**:每个映射器都有一个唯一的命名空间,它通常是全限定类名,用于区分不同的映射器。 2. **select、insert、update、delete**:这些元素定义了SQL语句,例如查询用户信息、插入数据、更新记录或删除...

    MyBatis3.2.4完全自学手册

    ### MyBatis3.2.4完全自学手册 #### 一、快速入门 **1、MyBatis简介** ...总结起来,MyBatis是一个功能强大、易于使用的持久层框架,通过其丰富的特性和灵活的配置选项,可以有效地解决各种数据库访问问题。

    MyBatis-搭建MyBatis开发环境一(MyEclipse版)

    在实际开发过程中,"数据库和纪要.txt"文件可能是记录数据库设计和开发过程中的重要笔记,包括表结构、字段说明、业务规则等。它可以帮助团队成员更好地理解数据库的设计意图,提高协作效率。 总结一下,MyBatis与...

    Mybatis工作流程.docx

    - **步骤说明**:通过`MyBatisUtil`工具类创建`SqlSessionFactory`工厂,并找到`mybatis-config.xml`总配置文件。这是MyBatis初始化的第一个环节。 - **关键代码**: ```java String resource = "org/mybatis/...

    mybatis和spring整合方式-带注解

    ### MyBatis与Spring整合方式详解:基于注解的实现 #### 一、概述 在实际的软件开发过程中,为了更好地实现项目的模块化管理和提高代码的可维护性,通常会将MyBatis与Spring框架进行整合。这种方式不仅能够简化...

    mybatis 实例说明

    MyBatis是一个强大的Java持久层框架,它提供了一种灵活的映射机制,将SQL语句与Java代码分离,使得数据库操作变得更加简单和易于管理。本实例将深入讲解MyBatis的基本概念、配置以及如何在实际项目中使用。 首先,...

    实现mybatis-只有一个参数传递的查询+代码+注释

    MyBatis的注释通常用于提供额外的说明,例如接口方法的用途、参数的意义等,以便其他开发者理解代码。在实际项目中,良好的注释可以提高代码的可读性和维护性。 总结来说,实现MyBatis中只有一个参数传递的查询,...

    mybatis一级缓存和二级缓存简单示例

    本文将深入讲解 MyBatis 的一级缓存和二级缓存,并通过一个简单的示例进行说明。 ### 一级缓存 一级缓存是 Session 级别的缓存,也称为本地缓存(Local Cache)。每当我们在一个 SqlSession 中执行了 CRUD 操作,...

    mybatis01_入门案例

    以下是对标题和描述中所述知识点的详细说明: 一、框架的理解 框架在软件开发中扮演着重要的角色,它是一套预定义的解决方案,针对特定问题领域提供了一种标准化的开发模式。例如,MyBatis是一个专门针对持久层操作...

    MyBatis初学

    以下是对标题和描述中提到的知识点的详细说明: 1. **环境搭建**: - **MyBatis 版本**:在描述中提到了使用的是 MyBatis 3.1.1 版本。尽管现在MyBatis已经更新到更高的版本,但了解旧版本的配置可以帮助理解框架...

    MyBatis 14道面试题和答案.docx

    以上就是关于MyBatis的核心知识点,包括其解决JDBC问题的方式、编程步骤、与Hibernate的区别,以及缓存机制的详细说明。这些内容涵盖了MyBatis的基础使用和高级特性,有助于理解和掌握MyBatis在实际项目中的应用。

    韩顺平 Java工程师课程-MyBatis.pdf

    MyBatis 正是为了解决这些问题而生的。MyBatis 通过将对数据表的操作(SQL、方法)等等直接剥离,写到 XML 配置文件,实现和 Java 代码的解耦,从而简化数据库操作,提高开发效率,提高代码的可读性和可维护性。 2....

    spring+springmvc+mybatis架构整合增删改查

    接着,我们来看`说明.txt`,这通常是一个指导文档,可能会包含集成步骤、配置详解或注意事项。在整合SSM的过程中,我们需要配置Spring的ApplicationContext、SpringMVC的DispatcherServlet配置以及MyBatis的...

    struts2.3+spring4.1+mybatis3.2.docx

    在Java Web开发领域,Struts2、Spring 和 MyBatis 是三个非常流行的开源框架,它们各自解决了不同的问题:Struts2 用于MVC模式的实现;Spring 作为轻量级的IoC容器和AOP框架;MyBatis 则提供了优秀的持久层解决方案...

    springboot mybatis freemark 框架集成 加实现demo

    以下是对集成过程的详细说明: 一、SpringBoot简介 SpringBoot是由Pivotal团队提供的全新框架,它旨在简化Spring应用的初始搭建以及开发过程。SpringBoot通过“约定优于配置”的方式,极大地减少了Spring应用的启动...

    Mybatis对数据库简单操作参考.pdf

    以下是对"Mybatis对数据库简单操作"的详细说明: 1. **创建Web程序**: 在这个例子中,我们创建了一个名为`test-mybatis`的Web应用程序。这通常涉及到在IDE(如Eclipse、IntelliJ IDEA等)中新建一个动态Web项目,...

    [应用开发及迁移][客户端编程开发框架]MyBatis指南.pdf

    #### 二、MyBatis配置说明 在使用MyBatis进行开发之前,需要完成必要的配置工作,主要包括以下几个方面: 1. **MyBatis Jar包与JDBC包的准备:** - MyBatis的jar包可以从官方网站下载。 - 适用于KingbaseES的...

    Mybatis一对多关联关系映射实现过程解析

    &lt;mapper namespace="cn.jason.bootmybatis.mapper.UserMapper"&gt; &lt;!--一对多关系映射 ofType表示属性集合中的元素的类型,List属性即Orders类 --&gt; &lt;!--关联查询sql--&gt; select u.*,o.id as ...

Global site tag (gtag.js) - Google Analytics