我知道mybatis会将查询结果映射到一个包含在resultMap中的POJO。我想知道,如果我写一个"选择*"查询,但resultMap不包含表中的所有列,mybatis会将查询重写为"选择col1,col2,...",或者仍然执行原始"选择*"查询?如果我只想要几列的结果,我应该写"选择col1,col2,..."首先,或mybatis会为我做这个工作吗?
答案 0 :(得分:0)
MyBatis是Java和.NET的轻量级持久性框架。这篇博客文章介绍了Java方面。 MyBatis是位于普通JDBC和ORM框架(例如EclipseLink或Hibernate)之间的替代方案。 MyBatis通常使用XML,但它也支持自版本3以来的注释。
@ SELECT-声明 如果你想使用一个参数,@ Select注释非常容易使用。如果您需要多个参数,请使用@Param注释(在更新示例中将对此进行描述)。 您不必将找到的信息映射到SimpleInformationEntity对象,就像使用JDBC ResultSet一样。框架的神奇之处在于此。
final String GET_INFO = “SELECT * FROM simple_information WHERE info_id =#{info_id}”;
@Select(的get_info) public SimpleInformationEntity getSimpleInformationById(int info_id)抛出异常;
答案 1 :(得分:0)
Mybatis不会根据结果图更改查询。
基本上,查询是通过支持动态sql生成所需的预处理直接传递给jdbc的,但是没有任何内容只隐含你编程的处理。
以下是如何处理来自映射器文件或注释的查询文本:
$
个变量代替了它们的值?
以满足参数if
,foreach
等,并生成相应的片段