写了一个最简单的测试,就是使用QueryRunner查询一个表中的所有记录,并保存在JavaBean类对象里。
问题如下:查询到的id全为0,使用普通sql查询是正确的;而且使用QueryRunner查询别的字段是正确的
数据库中的正确记录
代码如下
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import javax.management.Query;
import mons.dbutils.QueryRunner;
import mons.dbutils.handlers.BeanListHandler;
public class TestApaDBUtils {
QueryRunner query = new QueryRunner(DataSourceUtil.getDatasource());
public List select() {
String sql = "select * from users";
List list = null;
try {
list = query.query(sql, new BeanListHandler(UserBean.class));
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
TestApaDBUtils tab = new TestApaDBUtils();
List list = tab.select();
//普通查询正常
// Connection conn = DBUtil.getConnection("mysql");
// String sql = "select * from users";
// try {
// Statement stmt = conn.createStatement();
// ResultSet rs = stmt.executeQuery(sql);
// while(rs.next()) {
// System.out.println(rs.getInt("id"));
// }
// } catch (SQLException e) {
// e.printStackTrace();
// }
for(int i=0;i
UserBean ub = list.get(i);
System.out.println(ub);
}
}
}
UserBean的代码如下
public class UserBean {
private int userId;
private String username;
private String password;
private String email;
public UserBean() {super();}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "用户id: " + this.getUserId() + "用户名: " + this.getUsername()
+ "用户密码: " + this.getPassword() + "用户邮箱: " + this.getEmail();
}
}
个人感觉是UserBean有问题,但是已经按照标准写了,getter/setter都写了。实在看不出错误.
本追踪源码分析的,但是奈何最关键的rs.handle()方法体看不懂。。
环境:jdk1.8
win10
commons-dbutils-1.7
mysql5.7.20
JDBC驱动 mysql-connector-5.1.45
如果觉得《apachecommon连接mysql_使用Apache Commons的DBUtils工具包中的 QueryRunner查询数据库返回结果错误...》对你有帮助,请点赞、收藏,并留下你的观点哦!