关于使用jdbctemplate封装对象时的一个问题

public class UserManage {
    private JdbcTemplate jt = null;
    public List<User>  selectAll(){
        jt= new JdbcTemplate(DruidUtlis.getDs());
        String sql ="select * from usermanage";
        List<User> users=null;
        try {
            users = jt.query(sql, new BeanPropertyRowMapper<User>(User.class));
        }catch (Exception e){
            return null;
        }
        return users;
    }

我的疑问主要是这样的,我定义的数据库的user表中是有一个id属性的,但是当我使用jdbctemplate封装数据库数据为user对象的时候(User对象的定义如上图) ,刚好就能把我定义的user的属性和数据库的列名对应的封装为user对象,从而省略了对id属性的封装,这是为什么,难道jdbctemplate封装属性的时候 ,是根据我定义的user类型的属性,去找的数据库相同的列名进行封装的吗?

数据库查询出来数据,在根据User类中的setter方法封装数据