无涯教程-DBUtils - 自定义行处理器

38 阅读1分钟

如果数据库表中的列名和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

参考链接

www.learnfk.com/dbutils/dbu…