🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
- 评论对象的封装: ``` private String messageId;评论ID private String messageContent;评论内容 private String uId;用户ID private String goodId;评论物品ID private Integer isFirstMessage;第一条评论ID(建议可改为或添加‘是否为回复评论isAnswser’,返回为Boolean类型) private String refmessageId;回复评论ID private Date date;发布时间 private String formateDate;格式化后的时间 private String firstRefmessageId; private User user;用户(根据uId得到) private Message refMessage;回复的评论(根据refMessageId得到) private List<Message> answers;所有回复该评论的评论 ``` - Mybatis中mapper文件的sql语句: 1. 首先是根据物品的pid搜索所有的非回复评论,并根据评论时间进行降序排序。 ``` <!-- 根据productId查询所有首条留言的message对象 --> <select id="selectByProductId" parameterType="com.hudong.crud.bean.Message" resultMap="BaseResultMap2"> select <include refid="Base_Column_List" /> from message where good_id = #{goodId,jdbcType=VARCHAR} And is_first_message = #{isFirstMessage,jdbcType=INTEGER} order by date DESC </select> ``` 2. 其次是搜索每一条留言是否有回复留言并根据留言MessageId搜索出所有的回复留言,根据留言时间进行降序排序。(该sql语句使用的是分步查询,使用collection标签,映射封装对象answers) ``` <collection property="answers" select="com.hudong.crud.dao.MessageMapper.selectByFirstRefMessageId" column="message_id"> </collection> ``` ``` <!-- 根据firstRefmessageId查询所有的message对象 --> <select id="selectByFirstRefMessageId" parameterType="java.lang.String" resultMap="BaseResultMap2"> select <include refid="Base_Column_List" /> from message where first_refmessage_id = #{firstRefmessageId,jdbcType=VARCHAR} order by date DESC </select> ``` 3. 根据回复留言所回复的留言ID查询到所回复留言的数据(使用分步查询,association 标签,映射封装对象refMessage) ``` <association property="refMessage" select="com.hudong.crud.dao.MessageMapper.selectByPrimaryKey" column="refmessage_id"> </association> ``` - 页面具体测试: ![](https://box.kancloud.cn/95db2baab8cbe95e0a96f0710b5d6c04_1174x783.png) ***** 可以根据不同的需求进行改进,比如可以把回复做成可收放的形式。