如果数据库表中的列名和Javabean对象名不一样,那么无涯教程可以使用自定义的BasicRowProcessor对象来映射它们。请参见下面的示例。
以下是 Employee.java 的内容。
public class Employee { private int id; private int age; private String first; private String last; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getFirst() { return first; } public void setFirst(String first) { this.first = first; } public String getLast() { return last; } public void setLast(String last) { this.last = last; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
以下是 EmployeeHandler.java 文件的内容。
import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.Map;import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.BeanProcessor; import org.apache.commons.dbutils.BasicRowProcessor;
public class EmployeeHandler extends BeanHandler<Employee> {
public EmployeeHandler() { super(Employee.class, new BasicRowProcessor(new BeanProcessor(mapColumnsToFields()))); }
@Override public Employee handle(ResultSet rs) throws SQLException { Employee employee = super.handle(rs); employee.setName(employee.getFirst() +", " + employee.getLast()); return employee; }
public static Map<String, String> mapColumnsToFields() { Map<String, String> columnsToFieldsMap = new HashMap<>(); columnsToFieldsMap.put("ID", "id"); columnsToFieldsMap.put("AGE", "age");
return columnsToFieldsMap; } }
以下是 MainApp.java 文件的内容。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
public class MainApp {
//JDBC 驱动程序名称和数据库 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/emp";
//连接数据库凭据
static final String USER = "root";
static final String PASS = "admin";
public static void main(String[] args) throws SQLException {
Connection conn = null;
QueryRunner queryRunner = new QueryRunner();
DbUtils.loadDriver(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
EmployeeHandler employeeHandler = new EmployeeHandler();
</span><span class="kwd">try</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="typ">Employee</span><span class="pln"> emp </span><span class="pun">=</span><span class="pln"> queryRunner</span><span class="pun">.</span><span class="pln">query</span><span class="pun">(</span><span class="pln">conn</span><span class="pun">,</span><span class="pln"> </span><span class="str">"SELECT * FROM employees WHERE first=?"</span><span class="pun">,</span><span class="pln">
employeeHandler</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Sumit"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//显示对象信息</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"ID: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> emp</span><span class="pun">.</span><span class="pln">getId</span><span class="pun">());</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">", Age: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> emp</span><span class="pun">.</span><span class="pln">getAge</span><span class="pun">());</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">", Name: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> emp</span><span class="pun">.</span><span class="pln">getName</span><span class="pun">());</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">finally</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="typ">DbUtils</span><span class="pun">.</span><span class="pln">close</span><span class="pun">(</span><span class="pln">conn</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
}
}
创建完源文件后,让无涯教程运行该应用程序。如果您的应用程序一切正常,它将打印以下消息。
ID: 103, Age: 28, Name: Sumit, Learnfk