ibatis使用resultMap处理级联查询
2015-09-24 17:00
387 查看
resultmap和resultclass的区别:
一:当结果集列名和类的属性名完全相对应的时候,则可直接用resultClass直接指定查询结果类型。
二:当查询结果集与属性名对应不上的时候,就可以采用resultMap指定列名与对象属性名之间的对应关系,否则对应不上的属性将为null或0.
多级评论,树形结构。实体对象如下:
一:当结果集列名和类的属性名完全相对应的时候,则可直接用resultClass直接指定查询结果类型。
二:当查询结果集与属性名对应不上的时候,就可以采用resultMap指定列名与对象属性名之间的对应关系,否则对应不上的属性将为null或0.
[code]CREATE TABLE `langlang_vcourse_comments` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `vcourse_id` int(11) DEFAULT NULL COMMENT '微视频id', `user_id` int(11) DEFAULT NULL COMMENT '用户id', `comments` varchar(100) DEFAULT NULL COMMENT '点评内容', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间', `parent_id` int(11) DEFAULT '0' COMMENT '父节点id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
多级评论,树形结构。实体对象如下:
[code]public class Comment extends BaseModel implements Serializable { private Integer id; private Integer user_id; private String comments; private Integer vcourse_id ; private String userName; private String headImg; private Integer parent_id; List<Comment> commentList; //省略set和get方法 }
[code] <resultMap id="CommentMap" class="com.wizincloud.vcourse.model.Comment"> <result column="id" property="id" jdbcType="INTEGER" /> <result column="user_id" property="user_id" jdbcType="INTEGER" /> <result column="comments" property="comments" jdbcType="VARCHAR" /> <result column="vcourse_id" property="vcourse_id" jdbcType="INTEGER" /> <result column="parent_id" property="parent_id" jdbcType="INTEGER" /> <result column="created_at" property="created_at" jdbcType="Date" /> <result column="userName" property="userName" jdbcType="VARCHAR" /> <result column="id" property="commentList" select="selectCommentList"/> </resultMap> <select id="selectCommentList" parameterClass="int" resultClass="com.wizincloud.vcourse.model.Comment"> select t.* from langlang_vcourse_comments t where parent_id=#id# order by id asc </select> <select id="getCommentList" parameterClass="com.wizincloud.vcourse.model.Comment" resultMap="CommentMap"> SELECT c.*,u.name as userName FROM langlang_vcourse_comments c LEFT JOIN langlang_vcourse v ON v.id = c.vcourse_id LEFT JOIN langlang_users u ON u.id = c.user_id WHERE c.vcourse_id = #vcourse_id# <dynamic prepend=""> <isNotNull property="orderCol"> order by $orderCol$ <isNotNull property="ascDesc"> $ascDesc$ </isNotNull> </isNotNull> </dynamic> <dynamic prepend=""> <isNotNull property="rowNumStart"> <isNotNull property="pageSize"> LIMIT #rowNumStart#,#pageSize# </isNotNull> </isNotNull> </dynamic> </select>
相关文章推荐
- this.class.getClassLoader()怎么理解?
- unity3D第一天
- Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关
- 微策略数据挖掘一面面试经验
- Android之webview与js交互
- MVC中获取当前URL、controller、action
- 111
- Nginx配置文件详细说明
- Cookie/Session机制详解
- uva 1601(万圣节的早晨,经典搜索)
- 指针与二维数组
- ng-click
- iOS字体
- CocoStudio基础教程(3)在程序中处理cocoStudio导出动画
- Android 悬浮并可拖动的实现
- Tomcat8多实例安装
- C#日历样式的下拉式计算器实例讲解
- linux环境中的arm程序编辑器eclipse安装及使用方法
- 树莓派+8187L 安装 kali linux 跑pin
- Android APP 集成支付宝android 支付宝SDK集成