使用T selectByPrimaryKey(Object key)时,控制台的sql查询语句中的查询条件不止有主键id,这是为什么?
时间: 2023-12-10 22:37:41 浏览: 126
深入分析mysql为什么不推荐使用uuid或者雪花id作为主键
在 MyBatis 中,`selectByPrimaryKey` 方法是根据主键查询一条记录的方法。因此,控制台的 SQL 查询语句中的查询条件应该只包含主键 ID。但是,如果你的实体类中存在其他字段,并且这些字段在数据库中也存在对应的列,那么 MyBatis 会把这些字段也加入到查询条件中,以提高查询效率。
具体地说,MyBatis 会根据实体类中的所有非空属性生成 SQL 查询语句。这意味着如果你的实体类中有一些属性为 null,那么它们不会被包含在 SQL 查询语句中。
如果你不想让 MyBatis 把其他字段加入到查询条件中,可以在映射文件中给 `selectByPrimaryKey` 标签添加 `useGeneratedKeys="true"` 属性,这样就只会查询主键 ID 对应的记录。例如:
```xml
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap" useGeneratedKeys="true">
select
<include refid="Base_Column_List" />
from person
where id = #{id,jdbcType=INTEGER}
</select>
```
阅读全文