失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > apachecommon连接mysql_使用Apache Commons的DBUtils工具包中的 QueryRunner查询数据库返回结果错误...

apachecommon连接mysql_使用Apache Commons的DBUtils工具包中的 QueryRunner查询数据库返回结果错误...

时间:2021-04-27 13:34:19

相关推荐

apachecommon连接mysql_使用Apache Commons的DBUtils工具包中的 QueryRunner查询数据库返回结果错误...

写了一个最简单的测试,就是使用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查询数据库返回结果错误...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。