在我们写SQL Map文件时,如下行
<sqlMap namespace="User">
基本上我们是按照每个表一个命名空间(namespace)的。
在这个命名空间内有如下的SQLID行
<select id="getUserById" parameterClass="java.lang.Integer" resultClass="user">
<![CDATA[
SELECT id, username, password FROM users WHERE id = #id#
]]>
</select>
请注意这里的 id="getUserById" 在同一个命名空间中是不允许重复的,那么也就意味着在不同的命名空间中
是允许重复的。
通常状况下在DAO中我们这么引用
smc.queryForList("getUserById");
这一行中的getUserById就是SQLMap中的getUserById。
如果SQLMap中不同命名空间中出现了重复的ID我们怎么用?
我们可以这么用smc.queryForList("User.getUserById");
也就是在getUeserById前加上我们需要的命名空间即可正确的访问我们期望的SQL。
注意,如果要开启命名空间的使用,那么必须在配置数据源的配置文件中加入:
<settings useStatementNamespaces="true" />,否则命名空间无效。
摘自:http://blog.csdn.net/bukebushuo/article/details/2517010
分享到:
相关推荐
在.NET中使用iBATIS时,首先需要安装iBATIS.NET库。可以通过NuGet包管理器或者直接下载源码编译来获取。在VS2008项目中,添加对iBATIS.NET的引用,这样就可以开始配置和使用了。 接着,我们看压缩包内的"数据库.txt...
总结来说,iBatis中的SQLMap配置涉及到命名空间、别名、插入操作、主键获取、参数类型和结果映射等多个方面,理解和熟练掌握这些知识点对于高效地使用iBatis框架至关重要。通过合理的配置,可以有效地将Java代码与...
- `<settings>`:设置 Ibatis 的行为,如是否启用语句命名空间、缓存模型等。 - `<providers>`:指定数据驱动提供者的配置信息。 - `<database>`:包含数据库提供者信息,如数据库类型、连接字符串等。 **四、...
关于从文档复制代码的问题,以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与...
我们将使用iBatis的命名空间(namespace)来定义学生和教师之间的关系。 ```xml <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <!-- ...
当`useStatementNamespaces`设置为`true`时,必须使用完整的命名空间路径来调用相应的SQL映射语句。 #### resultMap的用途 `resultMap`是iBatis中一个重要的概念,主要用于定义如何将数据库查询结果映射到Java对象...
如果需要在其他命名空间中引用这些元素,则需要加上命名空间名作为前缀。 #### 三、实体别名 为了简化代码并提高可读性,iBatis允许使用实体别名。通过这种方式,可以在配置文件中使用简短的别名代替复杂的全限定...
在上述代码中,`UserMapper`接口对应了SQL映射文件中的命名空间,`getUserById`方法则对应了SQL映射文件中的一个SQL查询语句。通过这种方式,我们可以将数据库操作与业务逻辑解耦,使得代码更易于维护和扩展。 总结...
- **命名空间**:每个映射文件都应该有一个唯一的命名空间,用于区分不同的映射文件,避免命名冲突。 - **生命周期管理**:正确管理`SqlSessionFactory`和`SqlSession`的生命周期是至关重要的,通常`...
`<typeAlias>`用于为Java实体类创建简短的别名,方便在配置文件中使用。如`<typeAlias alias="Account" type="com.lavasoft.ibatissut.simple.domain.entity.Account"/>`,在需要使用Account类的地方,可以直接用...
在`book.xml`中,我们定义了一个命名空间`test`,并创建了类型别名,使得Ibatis能够识别我们的Pojo类。`resultMap`元素定义了结果集映射,其中`BookResult`映射到`Book`类,并设置了`oid`,`name`属性。特别地,`...
- **`useStatementNamespaces`**:控制是否使用命名空间,默认为`true`。使用命名空间可以帮助管理SQL语句,避免命名冲突。 5. **事务管理器`<transactionManager>`**: ```xml ... ``` 定义了ibatis的...
- **命名空间** (`namespace`):用于组织 SQL 映射的唯一标识符。 - **结果映射** (`resultMap`):定义了如何将数据库查询结果映射到 Java 对象。 - **SQL 查询**:定义了具体的 SQL 语句,其中 `#value#` 是参数...
而在`monter.xml`文件中,`sql-map`元素定义了命名空间,`result-map`用于定义结果集映射,`dynamic-mapped-statement`则用于动态构建SQL语句。这里要注意,`dynamic-mapped-statement`的`name`属性必须是唯一的,它...
这个命名空间将在Java代码中作为前缀使用。 - 使用`typeAlias`定义对象别名,如`User`,方便后续映射。 - 接下来,你可以定义各种数据库操作,如`insert`、`delete`、`update`和`select`。例如,`insertUser`方法...
这里的 `namespace` 代表一个命名空间,`select` 标签定义了一个查询操作,`id` 属性是查询的唯一标识,`parameterClass` 指定输入参数的类型,`resultClass` 定义了返回结果的对象类型。 在 Java 代码中,我们需要...
- `<settings>`:配置Ibatis的行为,如`useStatementNamespaces`设置为false意味着不使用命名空间,`cacheModelsEnabled`设置为true启用缓存。 - `<database>`:定义数据源,包括数据库供应商和连接字符串,其中`${}...
这里的 `namespace` 属性定义了映射的命名空间,`id` 属性是 SQL 语句的唯一标识,`resultType` 或 `parameterType` 指定了映射的对象类型。 动态 SQL 与条件查询Ibatis 支持动态 SQL,这使得在 SQL 语句中可以进行...
- **settings**:包含了多个设置,如useStatementNamespaces控制是否需要命名空间,cacheModelsEnabled决定是否启用缓存,validateSqlMap控制是否验证映射文件。 - **providers**:配置数据驱动提供类的位置。 - ...