ibatis中resultClass与resultMap 的区别
2016-01-05 10:40
567 查看
ibatis的resultClass与resultMap还是有很大的区别。以下是我碰到的一个问题。 配置文件写法如下: 1 sqlMap2 typeAlias alias="notice" type="path.country.basic.entity.Notice"/3 resultMap id={% ... ibatis的resultClass与resultMap还是有很大的区别。以下是我碰到的一个问题。
配置文件写法如下:
1 <sqlMap>
2 <typeAlias alias="notice" type="path.country.basic.entity.Notice"/>
3 <resultMap id="noticeResult" class="notice" >
4 <result property="id" column="MainID"/>
5 <result property="content" column="Notice_Content"/>
6 <result property="isUsed" column="Notice_IsUsed"/>
7 <result property="createMan" column="CreateId"/>
8 <result property="createDate" column="CreateDate"/>
9 <result property="createIp" column="CreateIP" />
10 <result property="lastModifyMan" column="ModifyId"/>
11 <result property="lastModifyDate" column="ModifyDate" />
12 <result property="lastModifyIp" column="ModifyIP" />
13 <result property="manName" column="CreateId" select="getUserNameById"/>
14 </resultMap>
15 <select id="getNewNotice" resultClass="notice">
16 SELECT * FROM Bse_Notice WHERE Notice_IsUsed='1'
17 </select>
18 </sqlMap>
在前台调用时,对象是取到了,但是里面的属性值为空。
查了相关资料才知道:resultclass属于隐身映射,虽然你指定resultclass=“”,具体某一个类,但是select语句得到的结果是一 条实力记录,但如果数据库字段与类的属性名字不一致,这个时候就会出现映射错误,有一种方式可以解决就是在写select语句时,给每个字段用as运算符 取名字与属性一样:例如:select realname as name...其中realname是字段列名,name是属性字段名。
当然解决问题还是很容易的,只需要把resultClass改为resultMap就行了。
在性能方面,resultMap要比resultClass高,所以建议尽量使用resultMap。
配置文件写法如下:
1 <sqlMap>
2 <typeAlias alias="notice" type="path.country.basic.entity.Notice"/>
3 <resultMap id="noticeResult" class="notice" >
4 <result property="id" column="MainID"/>
5 <result property="content" column="Notice_Content"/>
6 <result property="isUsed" column="Notice_IsUsed"/>
7 <result property="createMan" column="CreateId"/>
8 <result property="createDate" column="CreateDate"/>
9 <result property="createIp" column="CreateIP" />
10 <result property="lastModifyMan" column="ModifyId"/>
11 <result property="lastModifyDate" column="ModifyDate" />
12 <result property="lastModifyIp" column="ModifyIP" />
13 <result property="manName" column="CreateId" select="getUserNameById"/>
14 </resultMap>
15 <select id="getNewNotice" resultClass="notice">
16 SELECT * FROM Bse_Notice WHERE Notice_IsUsed='1'
17 </select>
18 </sqlMap>
在前台调用时,对象是取到了,但是里面的属性值为空。
查了相关资料才知道:resultclass属于隐身映射,虽然你指定resultclass=“”,具体某一个类,但是select语句得到的结果是一 条实力记录,但如果数据库字段与类的属性名字不一致,这个时候就会出现映射错误,有一种方式可以解决就是在写select语句时,给每个字段用as运算符 取名字与属性一样:例如:select realname as name...其中realname是字段列名,name是属性字段名。
当然解决问题还是很容易的,只需要把resultClass改为resultMap就行了。
在性能方面,resultMap要比resultClass高,所以建议尽量使用resultMap。
相关文章推荐
- 正则表达式和通配符
- iOS9 在 iOS9 中现在找不到 XXX.dylib 了,比如libz.tbd
- uCOS-II之信号量
- 得到字符串日期的前一个月
- Appium小试
- [发展与生存]可持续发展模式必须坚持
- tcp/ip协议listen函数中backlog參数的含义
- Appium小试
- python 时间格式化
- appium简明教程
- Appium介绍
- 关于Cordova 工程的一些小坑坑笔记
- HTML5 Canvas图像放大、移动实例1
- appium简明教程
- Appium介绍
- 2015年12月国内浏览器市场份额:IE卫冕失败
- jquery之对象访问
- JsonValue 封装类
- 反射Shader
- SharedPreferences存储到指定位置