数据库的表中有两个字段,username和password
sql表达式是:select password from app_user where username=?;
username已知,
通过String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
就可以得到password。
这部分是官方示例程序,不用怀疑,也测试过,能正常运行。现在给表中增加了一个字段id,即现在有表中有三个字段:id,username和password
sql表达式是应该是:select id, password from app_user where username=?;
username已知,
怎么得到id和password?折腾了一天没有解决,高手指点一下!
sql表达式是:select password from app_user where username=?;
username已知,
通过String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
就可以得到password。
这部分是官方示例程序,不用怀疑,也测试过,能正常运行。现在给表中增加了一个字段id,即现在有表中有三个字段:id,username和password
sql表达式是应该是:select id, password from app_user where username=?;
username已知,
怎么得到id和password?折腾了一天没有解决,高手指点一下!
解决方案 »
- java io方面的 对于一个5G的文件 请问我该如何删除文件中某一块内容
- 经常对这种对象生成方法产生混淆.希望大家能帮我在这里讨论清楚
- 从InputStream中read出来个"-1",代表什么?
- 关于swt tableviewer的滚动条问题
- java传递参数问题
- FileNotFoundException的问题
- 高人请进。。有事?
- J2EE\J2SE\J2ME,有什么区别?JDK、JBulider又有什么不同
- 数字转换成大写程序缺陷疑问
- scjp考题一道
- myeclipse 建不了包,一建包的时候就变成文件夹
- String与StringBuffer,既然Stringbuffer那么好,为什么JDK要保留String,面试题,高手进
Object[] parameters = new Object[] {new String(username)};
//Object[] parameters = new Object[] {username};
List<Map<String, Object>> userList = getJdbcTemplate().queryForList(this.sql,parameters);
Map<String, Object> userMap = userList.get(0);
final String userid = (String)userMap.get("id");
final String dbPassword = (String)userMap.get("password");
private String id;
private String userName;
....
}SimpleJdbcTemplate jdbcTemplate;
jdbcTemplate = new SimpleJdbcTemplate(dataSource);List<User> users = jdbcTemplate.query(sql,
new ParameterizedRowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int index) throws SQLException {
User user = new User();
user.setId(rs.getString("id"));
user.setUsername(rs.getString("username"));
...
return user;
}
});
下面是系统自带的一个文件,我就想把这个文件修改一下,满足我的需要,即一次查询查询两个字段。你再帮我看看有没有其它需要注意到地方。package org.jasig.cas.adaptors.jdbc;
import org.jasig.cas.authentication.handler.AuthenticationException;
import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import javax.validation.constraints.NotNull;public final class QueryDatabaseAuthenticationHandler extends
AbstractJdbcUsernamePasswordAuthenticationHandler { @NotNull
private String sql; protected final boolean authenticateUsernamePasswordInternal(final UsernamePasswordCredentials credentials) throws AuthenticationException {
final String username = getPrincipalNameTransformer().transform(credentials.getUsername());
final String password = credentials.getPassword();
final String encryptedPassword = this.getPasswordEncoder().encode(
password);
try {
final String dbPassword = getJdbcTemplate().queryForObject(
this.sql, String.class, username);
return dbPassword.equals(encryptedPassword);
} catch (final IncorrectResultSizeDataAccessException e) {
// this means the username was not found.
return false;
}
}
public void setSql(final String sql) {
this.sql = sql;
}
}
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="select id, password from app_user where username = ?" />
</bean>dataSource也在另外一个xml文件中做了定义,这些都没有问题,测试过的。
final String userid = (String)userMap.get("id");
应该写成:
int userid = ((Integer) userMap.get("id")).intValue();多谢irvine007!