我有一些表都有一个名为 的字段created_at,这是一个时间戳,表示插入行的时间。
现在我使用 mybatis 3 作为持久层,用join.
看看我期望得到所有问题及其答案的简单 sql:
<select id="selectQuestionsWithAnswers">
select q.*, a.* from questions as q left inner join answers as a
on q.id=a.id
order by a.created_at desc
</select>
但我发现,因为questionsandanswers都有 field created_at,如果我写select q.*, a.*,结果集中有 2created_at个,第二个被忽略。所以答案的created_at值为questions,这是不正确的。
为了避免这种情况,我找到了两种方法,但都不好:
修改每个表的字段名称,确保它们不相同。例如:
questions.created_at->questions.q_created_at,answers.created_at->answers.a_created_at。这不好,因为有很多这样的字段,如,,,,它
id使数据库难以阅读和维护以更改这些名称nametitleupdated_at修改 SQL。更改sql中的字段名称,例如:
select q.id as q_id, q.title as q_title, ..., q.created_at as q_created_at, a.id as a_id, a.content as a_content, ..., a.created_at as a_created_at from questions as q left inner join answers as a on q.id=a.id order by a.created_at desc这不好,因为我需要更改 SQL 中的每个字段名称,它变得非常长且难以阅读,并且每次编写这样的 SQL 都非常痛苦。
我是mybatis新手,有没有更好的解决这个问题的方法?