Java Basics--jdbc-Reflection etc __java

Source: Internet
Author: User
Tags reflection

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 ());
 }
  }
}



Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.