Java JDBC模板查询与spring
我正在尝试选择数据库以从字符串获取数据:Java JDBC模板查询与spring,java,spring,spring-data,Java,Spring,Spring Data,我正在尝试选择数据库以从字符串获取数据: final String queryPorLogin = "SELECT * from usuarios where login=? "; @Autowired private JdbcTemplate jdbcTemplate; @Override public boolean validar(String login) { return this.jdbcTemplate.queryForObject(queryPorLogin, new
final String queryPorLogin = "SELECT * from usuarios where login=? ";
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public boolean validar(String login) {
return this.jdbcTemplate.queryForObject(queryPorLogin, new Usuarios(),
login);
}
但我有一个错误:
我认为在这种情况下使用该查询是不正确的,因为我想在数据库上进行选择,如果有结果,请使用resultset进行检查(使用bcrpyt的密码)。有人能帮我吗
我需要获取此选择的结果并进行比较。您稍微混合了
jdbcTemplate.queryForObject
的输入。应该是:
Usuarios usuarios = this.jdbcTemplate.queryForObject(queryPorLogin,
new Object[]{login},
Usuarios.class); // can pass also a RowMapper<Usuarios> for more detailed approach
Usuarios-Usuarios=this.jdbcTemplate.queryForObject(queryorlogin,
新对象[]{login},
Usuarios.class);//还可以传递行映射器以获得更详细的方法
第二个参数获取要绑定的参数列表,第三个参数获取预期结果的
类。您稍微混合了jdbcTemplate.queryForObject
的输入。应该是:
Usuarios usuarios = this.jdbcTemplate.queryForObject(queryPorLogin,
new Object[]{login},
Usuarios.class); // can pass also a RowMapper<Usuarios> for more detailed approach
Usuarios-Usuarios=this.jdbcTemplate.queryForObject(queryorlogin,
新对象[]{login},
Usuarios.class);//还可以传递行映射器以获得更详细的方法
第二个参数获取要绑定的参数列表,第三个参数获取预期结果的类。在我看来queryForMap
似乎是一个更好的选择
Map Map=jdbcTemplate.queryForMap(sql,login)代码>
这将产生一个以键作为字符串、以值作为对象映射的单行。然后您可以检查您的bcrypt
如果您的首选项是queryForObject
,那么您已经得到了上面的答案
在我看来,queryForMap
似乎是一个更好的选择
Map Map=jdbcTemplate.queryForMap(sql,login)代码>
这将产生一个以键作为字符串、以值作为对象映射的单行。然后您可以检查您的bcrypt
如果您的首选项是queryForObject
,那么您已经得到了上面的答案
谢谢此用户。我可以进行比较吗?有没有办法使用resultset?是的,您需要作为第三个参数a行映射器传入。它应该包含mappingsEven的实现,尽管它只是这个表的一条记录?这是旧的API。您不需要对象[]
较新的api有varargs,这些参数必须是最后一个参数。在当前版本中,它没有被弃用。与此用户进行比较是否可以使用resultset?是的,您需要作为第三个参数传入行映射器。它应该包含mappingsEven的实现,尽管它只是这个表的一条记录?这是旧的API。您不需要对象[]
较新的api有vararg,并且这些必须是最后一个参数。在当前版本中,它没有被弃用,因为我需要为每个对象设置一个变量来获取密码和登录名?或者使用contains?如果表中每个登录名只包含一行,queryForMap
更适合,您不需要循环。否则,queryForList
,需要循环。请参见编辑示例。包含单行,然后我必须使用包含来检查bd密码是否与输入的密码相同?可能等于,而不仅仅是包含。但正如您所说,在进行比较之前,您可能需要对其进行bcrypt。之后,我需要为每个人输入密码和登录名?或者使用contains?如果您的表中每个登录名只包含一行,queryForMap
更适合,您不需要循环。否则,queryForList
,需要循环。请参见编辑示例。包含单行,然后我必须使用包含来检查bd密码是否与输入的密码相同?可能等于,而不仅仅是包含。但正如你所说,在进行比较之前,你可能需要对其进行检查。