User class
Package com. Jdbctest;
Import java.util.Date;
public class User {
private Integer ID;
Private String username;
Private String address;
Private Date birthday;
Public Integer GetId () {return
ID;
}
public void SetId (Integer id) {
this.id = ID;
}
Public String GetUserName () {return
username;
}
public void Setusername (String username) {
this.username = username;
}
Public String getaddress () {return address
;
}
public void setaddress (String address) {
this.address = address;
}
Public Date Getbirthday () {return
birthday;
}
public void Setbirthday (Date birthday) {
this.birthday = birthday;
}
}
Interface class
Package com. Jdbctest;
Import Java.sql.ResultSet;
Import java.sql.SQLException;
@FunctionalInterface Public
interface ResultSetExtractor {
//function Generic public Object Extractdata ( ResultSet rs) throws SQLException;
}
Reflection class
Package com. Jdbctest;
Import Java.lang.reflect.Method;
Import java.util.Date;
The public class Reflectutil {
/**
* Sets the parameter of the object
/public
static void SetValue (String name,object value,object obj) {
try {
Class clz = Obj.getclass ();
String tname = Value.getclass (). Gettypename ();
Method method = Clz.getdeclaredmethod ("Set" +name, Class.forName (Tname));
Method.invoke (obj, value);
} catch (Exception e) {
e.printstacktrace ();
}
}
Public static void Main (string[] args) {
// User user = new User (); reflectutil.setvalue ("Id", "7", user); reflectutil.setvalue ("Username", "tt", user); Reflectutil.setvalue ("Address", "Shanghai", user);
// }
}
Implementation class
Package com.
Jdbctest;
Import java.sql.Connection;
Import Java.sql.DriverManager;
Import java.sql.PreparedStatement;
Import Java.sql.ResultSet;
Import Java.sql.ResultSetMetaData;
Import java.sql.SQLException;
Import java.util.ArrayList;
Import java.util.LinkedList;
Import java.util.List; public class Session {private static final String url = ' Jdbc:mysql://119.254.106.50:3309/test?useunicode=true&char
Acterencoding=utf8 ";
Private static final String user = "rw_all_db";
Private static final String password = "rw_all_db"; /** * Get a single data */public <t>t query (String sql,resultsetextractor extractor) {try {class.forname ("Com.mysql . jdbc.
Driver ");
Connection Connection = drivermanager.getconnection (url, user, password);
PreparedStatement statement = connection.preparestatement (SQL);
ResultSet rs = Statement.executequery ();
Rs.next ();
Return (T) Extractor.extractdata (RS);
catch (Exception e) {return null;
Finally {//close connection}}/** * Get a single data with parameters/public <t>t query (String sql,resultsetextractor extractor,object...params) {try {Class.forn
Ame ("Com.mysql.jdbc.Driver");
Connection Connection = drivermanager.getconnection (url, user, password);
PreparedStatement statement = connection.preparestatement (SQL); if (params!=null && params.length > 0) {for (int i = 0; i < params.length; i++) {object = PA
Rams[i];
Statement.setobject (i+1, object);
} ResultSet rs = Statement.executequery ();
Rs.next ();
Return (T) Extractor.extractdata (RS);
catch (Exception e) {return null; /** * With parameters fetch multiple data/public <T>List<T> querylist (String sql,resultsetextractor extractor,object ...
. params) {try {class.forname ("com.mysql.jdbc.Driver");
Connection Connection = drivermanager.getconnection (url, user, password);
PreparedStatement statement = connection.preparestatement (SQL); if (params!=null && params.length > 0){for (int i = 0; i < params.length i++) {object = Params[i];
Statement.setobject (i+1, object);
} ResultSet rs = Statement.executequery ();
list<t> lists = new arraylist<> ();
while (Rs.next ()) {Lists.add ((T) Extractor.extractdata (RS));
return lists;
catch (Exception e) {return null; }/** * Reflection/Public <T>List<T> querylist (String sql,class clz,object...params) {try {Class
. forname ("Com.mysql.jdbc.Driver");
Gets the Connection object Connection Connection = drivermanager.getconnection (url, user, password);
Performs preprocessing objects PreparedStatement statement = connection.preparestatement (SQL); Set the parameter if (params!=null && params.length > 0) {for (int i = 0; i < params.length; i++) {Object O
Bject = Params[i];
Statement.setobject (i+1, object);
The result set ResultSet rs = Statement.executequery (); Get the SQL statement select ***from This section of the ResultSetMetaData MetaData= Rs.getmetadata ();
int count = Metadata.getcolumncount ();
Defines a collection to store these column names linkedlist<string> colunmnames = new linkedlist<> (); for (int i = 0; i < count; i++) {Colunmnames.add (Metadata.getcolumnname (i+1));//Resolve Storage}//define container, Mount data list& Lt
t> lists = new arraylist<> ();
while (Rs.next ()) {//Instantiate object T obj = (t) clz.newinstance (); for (String string:colunmnames) {//Speak database corresponding to the corresponding property name in the JavaBean, capitalize the first letter, because Setusername//columntoproperty () Speak database column name
Convert to hump naming rules, Create_time---createtime//create_time--columntoproperty--createtime--touppercasefirst---createTime
String colunmname = string.substring (0, 1). toUpperCase () + string.substring (1);
Call reflection, assigning values to attributes Reflectutil.setvalue (Colunmname, Rs.getobject (colunmname), obj);
///Put the data into the collection lists.add (obj);
return lists;
catch (Exception e) {return null;
} public static void Main (string[] args) {Session session = new session (); Test One: SingleBar data//String sql = "Select id,username,address from user where id = 1"; User User1 = Session.query (sql, new ResultSetExtractor () {////@Override//Public user Extractdata (ResultSet RS) throws SQLException {//user user = new User ();//User.setid (Rs.getint ("id"));//User.setusername (rs.gets
Tring ("username"));
User.setaddress (rs.getstring ("Address"));
return user;
// }
// });
System.out.println (User1.getid () + "=>" +user1.getaddress () + "=>" +user1.getusername ());
Test two: With parameter single data//String sql = "Select id,username,address from user where id =?"; User User1 = Session.query (sql, new ResultSetExtractor () {////@Override//Public user Extractdata (ResultSet RS) throws SQLException {//user user = new User ();//User.setid (Rs.getint ("id"));//User.setusername (rs.gets
Tring ("username"));
User.setaddress (rs.getstring ("Address"));
return user;
}//},5); System.out.println (User1.getid () + "=>" +user1.getAddress () + "=>" +user1.getusername ());
Test three: With parameter multiple data String sql = "Select id,username,address from user where address =?"; list<user> list = session.querylist (sql, new ResultSetExtractor () {////@Override//Public User Extrac Tdata (ResultSet rs) throws SQLException {//user user = new User ();//User.setid (Rs.getint ("id"));//User.setu
Sername (rs.getstring ("username"));
User.setaddress (rs.getstring ("Address"));
return user;
}//}, "Beijing"); for (User user1:list) {//System.out.println (User1.getid () + "=>" +user1.getaddress () + "=>" +user1.getusern
Ame ()); //lamad function rewrite//list<user> list1 = session.querylist (sql, (RS)-> {//user user = new user ();//
User.setid (Rs.getint ("id"));
User.setusername (rs.getstring ("username"));
User.setaddress (rs.getstring ("Address"));
return user;}
, "Beijing"); for (User user1:list1) {//System.out.println (User1.getid () + "=>" +user1.getAddress () + "=>" +user1.getusername ());
///Reflection Test list<user> List = session.querylist (Sql,user.class, "Shanghai");
for (User user1:list) {System.out.println (User1.getid () + "=>" +user1.getaddress () + "=>" +user1.getusername ());
}
}
}