ibatis的resultClass与resultMap还是有很大的区别。以下是我碰到的一个问题。
配置文件写法如下
<sqlMap>
<typeAlias alias="notice" type="path.country.basic.entity.Notice"/>
<resultMap id="noticeResult" class="notice" >
<result property="id" column="MainID"/>
<result property="content" column="Notice_Content"/>
<result property="isUsed" column="Notice_IsUsed"/>
<result property="createMan" column="CreateId"/>
<result property="createDate" column="CreateDate"/>
<result property="createIp" column="CreateIP" />
<result property="lastModifyMan" column="ModifyId"/>
<result property="lastModifyDate" column="ModifyDate" />
<result property="lastModifyIp" column="ModifyIP" />
<result property="manName" column="CreateId" select="getUserNameById"/>
</resultMap>
<select id="getNewNotice" resultClass="notice">
SELECT * FROM Bse_Notice WHERE Notice_IsUsed='1'
</select>
</sqlMap>
在前台调用时,对象是取到了,但是里面的属性值为空。
查了相关资料才知道:resultclass属于隐身映射,虽然你指定resultclass=“”,具体某一个类,但是select语句得到的结果是一条实力记录,但如果数据库字段与类的属性名字不一致,这个时候就会出现映射错误,有一种方式可以解决就是在写select语句时,给每个字段用as运算符取名字与属性一样:例如:select realname as name...其中realname是字段列名,name是属性字段名。
当然解决问题还是很容易的,只需要把resultClass改为resultMap就行了。
在性能方面,resultMap要比resultClass高,所以建议尽量使用resultMap。
分享到:
相关推荐
### ibatis 使用 HashMap 解决 resultClass 映射 在日常的软件开发过程中,尤其是在处理数据库查询时,我们经常面临一个问题:如何优雅地处理那些未知或动态变化的列名及列数的情况?在这种情况下,传统的实体类...
5. **自动生成select语句**:在标签处,按Alt+Enter选择Generate result for resultMap or resultClass,插件会根据parameterClass或parameterMap自动生成对应的select语句。 6. **SqlMapClient方法调用的代码提示*...
- `<select>` 标签用于查询,其中包含 SQL 语句,并设置 `resultClass` 属性指定返回结果的类型。 - `<insert>` 标签用于插入数据,设置 `parameterClass` 指定输入参数类型。 - `<update>` 标签用于更新数据。 - `...
<select id="selectUsers" parameterClass="int" resultClass="User"> SELECT * FROM User WHERE name LIKE '%$name$%' age = #age# ``` #### 事务管理 iBatis支持两种事务管理机制:基于JDBC的...
<select id="getAllUsers" resultClass="user"> SELECT id, name FROM user ORDER BY id ``` 这段代码定义了一个名为`getAllUsers`的方法,用于执行查询所有用户信息的SQL语句,并将结果映射为`User`对象列表。 ...
在深入探讨ibatis框架中可能遇到的错误时,我们首先需要理解ibatis(现被称为MyBatis)的基本概念。ibatis是一种优秀的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。ibatis可以使用...
- 类似地,`resultClass`属性在ibatis中用于指定结果类型,在myBatis中被替换成了`resultType`。 #### 六、其他细节变化 - **存储过程的支持**:在ibatis中,存储过程的调用使用`<procedure>`元素,而在myBatis中...
resultClass="java.util.HashMap" remapResults="true"> select $fieldnames$ from $resourcetable$ where 1=1 ``` 这里的 `<select>` 标签定义了一个查询语句,其参数类型为 `HashMap`,返回结果也是 `...
<select id="getAccount" parameterClass="java.lang.String" resultClass="example.Account"> select * from Account where username = #value# insert into Account(username, password) values(#username...
### ibatis环境搭建教程 #### 一、ibatis简介与特点 ibatis是一个开源的持久层框架,它提供了一种简单而强大的ORM(Object-Relational Mapping)实现方式,能够帮助开发者更高效地进行Java应用及数据库之间的交互...
在本教程中,我们将详细介绍如何搭建一个基于Ibatis 2.3.4.726版本和SQL Server 2005的开发环境。Ibatis是一个轻量级的持久层框架,它允许开发者将SQL语句与Java代码分离,提高了数据库操作的灵活性。 首先,确保你...
**Ibatis 入门实例详解** Ibatis 是一个优秀的轻量级 Java ORM(对象关系映射)框架,它允许开发者将 SQL 查询与 Java 代码分离,使得数据访问层更加灵活和易于维护。在这个"ibatis入门实例(全代码)"中,我们将...
在.NET环境中,iBATIS(现更名为MyBatis .NET)是一个流行的持久层框架,它提供了数据访问的简便方法,将SQL查询与业务逻辑解耦。这个小例子展示了如何在Visual Studio 2008中集成和使用iBATISNET。下面我们将详细...
- **`resultClass`和`resultMap`**:用于指定结果集的映射类型,其中`resultMap`提供了更灵活的映射方式,可以处理复杂的一对多、多对多关系。 - **`cacheModel`**:定义缓存策略,可以提高应用程序的性能。 - **...
<select id="selectUserById" parameterClass="int" resultClass="com.example.User"> SELECT * FROM users WHERE id = #value# <!-- 更多SQL语句... --> ``` 在Java代码中,可以通过以下方式调用SQL: ```...
在`<select>`标签中,`id`属性是SQL语句的唯一标识,`parameterClass`指定了传入参数的类型,而`resultClass`则指定了返回结果的类型。在示例中,`getAccount`方法用于根据username获取Account对象,SQL语句是查询...
<select id="selectUserById" parameterClass="int" resultClass="User"> SELECT * FROM users WHERE id = #value# ``` 在Java代码中,你可以使用SqlSessionFactory来创建SqlSession对象,然后通过SqlSession...