<!--[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
分享到:
相关推荐
MyBatis作为一款优秀的持久层框架,主要解决了Java应用与数据库交互的问题。它支持普通的SQL查询、存储过程和高级映射,可以用来处理复杂的SQL,例如联表查询等,并且支持动态SQL语句,这在处理有较多条件判断的场景...
1. **namespace**:每个映射器都有一个唯一的命名空间,它通常是全限定类名,用于区分不同的映射器。 2. **select、insert、update、delete**:这些元素定义了SQL语句,例如查询用户信息、插入数据、更新记录或删除...
### MyBatis3.2.4完全自学手册 #### 一、快速入门 **1、MyBatis简介** ...总结起来,MyBatis是一个功能强大、易于使用的持久层框架,通过其丰富的特性和灵活的配置选项,可以有效地解决各种数据库访问问题。
在实际开发过程中,"数据库和纪要.txt"文件可能是记录数据库设计和开发过程中的重要笔记,包括表结构、字段说明、业务规则等。它可以帮助团队成员更好地理解数据库的设计意图,提高协作效率。 总结一下,MyBatis与...
- **步骤说明**:通过`MyBatisUtil`工具类创建`SqlSessionFactory`工厂,并找到`mybatis-config.xml`总配置文件。这是MyBatis初始化的第一个环节。 - **关键代码**: ```java String resource = "org/mybatis/...
### MyBatis与Spring整合方式详解:基于注解的实现 #### 一、概述 在实际的软件开发过程中,为了更好地实现项目的模块化管理和提高代码的可维护性,通常会将MyBatis与Spring框架进行整合。这种方式不仅能够简化...
MyBatis是一个强大的Java持久层框架,它提供了一种灵活的映射机制,将SQL语句与Java代码分离,使得数据库操作变得更加简单和易于管理。本实例将深入讲解MyBatis的基本概念、配置以及如何在实际项目中使用。 首先,...
MyBatis的注释通常用于提供额外的说明,例如接口方法的用途、参数的意义等,以便其他开发者理解代码。在实际项目中,良好的注释可以提高代码的可读性和维护性。 总结来说,实现MyBatis中只有一个参数传递的查询,...
本文将深入讲解 MyBatis 的一级缓存和二级缓存,并通过一个简单的示例进行说明。 ### 一级缓存 一级缓存是 Session 级别的缓存,也称为本地缓存(Local Cache)。每当我们在一个 SqlSession 中执行了 CRUD 操作,...
以下是对标题和描述中所述知识点的详细说明: 一、框架的理解 框架在软件开发中扮演着重要的角色,它是一套预定义的解决方案,针对特定问题领域提供了一种标准化的开发模式。例如,MyBatis是一个专门针对持久层操作...
以下是对标题和描述中提到的知识点的详细说明: 1. **环境搭建**: - **MyBatis 版本**:在描述中提到了使用的是 MyBatis 3.1.1 版本。尽管现在MyBatis已经更新到更高的版本,但了解旧版本的配置可以帮助理解框架...
以上就是关于MyBatis的核心知识点,包括其解决JDBC问题的方式、编程步骤、与Hibernate的区别,以及缓存机制的详细说明。这些内容涵盖了MyBatis的基础使用和高级特性,有助于理解和掌握MyBatis在实际项目中的应用。
MyBatis 正是为了解决这些问题而生的。MyBatis 通过将对数据表的操作(SQL、方法)等等直接剥离,写到 XML 配置文件,实现和 Java 代码的解耦,从而简化数据库操作,提高开发效率,提高代码的可读性和可维护性。 2....
接着,我们来看`说明.txt`,这通常是一个指导文档,可能会包含集成步骤、配置详解或注意事项。在整合SSM的过程中,我们需要配置Spring的ApplicationContext、SpringMVC的DispatcherServlet配置以及MyBatis的...
在Java Web开发领域,Struts2、Spring 和 MyBatis 是三个非常流行的开源框架,它们各自解决了不同的问题:Struts2 用于MVC模式的实现;Spring 作为轻量级的IoC容器和AOP框架;MyBatis 则提供了优秀的持久层解决方案...
以下是对集成过程的详细说明: 一、SpringBoot简介 SpringBoot是由Pivotal团队提供的全新框架,它旨在简化Spring应用的初始搭建以及开发过程。SpringBoot通过“约定优于配置”的方式,极大地减少了Spring应用的启动...
以下是对"Mybatis对数据库简单操作"的详细说明: 1. **创建Web程序**: 在这个例子中,我们创建了一个名为`test-mybatis`的Web应用程序。这通常涉及到在IDE(如Eclipse、IntelliJ IDEA等)中新建一个动态Web项目,...
#### 二、MyBatis配置说明 在使用MyBatis进行开发之前,需要完成必要的配置工作,主要包括以下几个方面: 1. **MyBatis Jar包与JDBC包的准备:** - MyBatis的jar包可以从官方网站下载。 - 适用于KingbaseES的...
<mapper namespace="cn.jason.bootmybatis.mapper.UserMapper"> <!--一对多关系映射 ofType表示属性集合中的元素的类型,List属性即Orders类 --> <!--关联查询sql--> select u.*,o.id as ...