Revision: 67382
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 16, 2014 01:08 by prgrmmraben
Initial Code
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; /** * @author asben14[at]outlook (dot) fr * @see for suggestions, comments * or donations here is my blog <a href="http://fivesnippets.blogspot.com/">fivesnippets.blogspot.com</a> */ public class DBHelper { public static java.sql.PreparedStatement pst; public static ResultSet rs; public static java.sql.ResultSetMetaData rsmd; public static Connection con; /** * Initializes connection, can be replaced by DBHelper * constructor with some changes (make static variables attributes) in order * to have multiple connections instantly with many preparedStatement * objects */ public static void init() { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e1) { e1.printStackTrace(); } String url = "jdbc:mysql://localhost:3306/test"; String user = "put a username"; String password = "put your password"; try { con = DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); } } public DBHelper() { // TODO Auto-generated constructor stub } /** * select rows from any table, provided that the table has the same columns as the bean * fields, similarity here is about names and types, types need to be * mapped correctly check the link bellow * @see <a href="http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html">Java, JDBC and MySQL Types</a> * @return Iterator of objects representing selected rows */ public static Iterator getBeans(String condition, Object bean, String table) throws SQLException, IllegalArgumentException, SecurityException, IllegalAccessException { System.out.println("SELECT * FROM " + table + " WHERE " + condition); pst = con.prepareStatement("SELECT * FROM " + table + " WHERE " + condition); rs = pst.executeQuery(); rsmd = rs.getMetaData(); ArrayList link = new ArrayList(); Object element = null; try { element = bean.getClass().newInstance(); } catch (InstantiationException e) { } // the critical work is made here, these two loops are fetching data // from the resultSet object which contains rows, into the iterator // one row by one bean while (rs.next()) { rsmd = rs.getMetaData(); int length = element.getClass().getDeclaredFields().length; int length1 = rsmd.getColumnCount(); for (int i = 0; i < length1; i++) { for (int j = 0; j < length; j++) { if (element.getClass().getDeclaredFields()[j].getName() .equals(rsmd.getColumnName(i + 1))) { element.getClass().getDeclaredFields()[j].set(element, rs.getObject(i + 1)); } } } link.add(element); try { element = bean.getClass().newInstance(); } catch (InstantiationException e) { } } return link.iterator(); } /** * @return a single row from any table and map it into a bean, * provided that it has the same columns as the bean fields, * similarity here is about names and types, types need to be mapped * correctly */ public static Object getBean(String condition, Object bean, String table) throws SQLException, IllegalArgumentException, SecurityException, IllegalAccessException { System.out.println("SELECT * FROM " + table + " WHERE " + condition); pst = con.prepareStatement("SELECT * FROM " + table + " WHERE " + condition); rs = pst.executeQuery(); rsmd = rs.getMetaData(); rs.next(); int length = bean.getClass().getDeclaredFields().length; int length1 = rsmd.getColumnCount(); if (rs.getRow() == 1) { for (int i = 0; i < length1; i++) { for (int j = 0; j < length; j++) { if (bean.getClass().getDeclaredFields()[j].getName() .equals(rsmd.getColumnName(i + 1))) { bean.getClass().getDeclaredFields()[j].set(bean, rs.getObject(i + 1)); } } } } else return null; return bean; } }
Initial URL
http://fivesnippets.blogspot.com/2014/09/map-mysql-tables-to-java-beans-by.html
Initial Description
DBHelper can retrieve Mysql tables into java objects, without any external libraries or a mapping configuration file. note: please test before use, then use at your own risk.
Initial Title
Map Mysql tables to java beans, by a one class
Initial Tags
mysql
Initial Language
Java