MyBatis 不封装对象获取数据库值的解决方案
思路:如果我们不想封装对象,使用 Map 来封装 SQL 查询的结果集是一个理想的方案。下面就是一个实现类示例。
List<Map<String, String>> listMap = (List<Map<String, String>>) this.getSqlMapClientTemplate().queryForList("writingEssay.queryAssignmentErrorAndReminderByAssId", assignment_id);
String context = getEssayContextByJson(listMap.get(0).get("assignment_history_content"), listMap.get(0).get("essay_set_format"));
我们再来看看底层的 SQL 语句。
<!-- 通过作业 id 查询,查询作业内容和作业格式和要求的单词 -->
<select id="queryAssignmentErrorAndReminderByAssId" resultClass="java.util.HashMap" parameterClass="java.lang.Integer">
SELECT
a.assignment_history_content AS assignment_history_content,
c.essay_set_format AS essay_set_format,
d.essay_reminder AS essay_reminder
FROM
t_assignment_content a,
t_assignment b,
t_essay_set c,
t_essay d
WHERE
b.assignment_history_id = a.assignment_history_id
AND b.assignment_id = $assignment_id$
AND b.essay_id = d.essay_id
AND d.essay_set_id = c.essay_set_id;
</select>
查询数据库得到的结果集。
分析:因为我们明确地知道结果集返回一条数据。