Preparestatement 反射创建对象

package com.hu;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.ResultSetMetaData;

public class Tools {
public static Connection connection=null;
public static PreparedStatement preparedStatement=null;
public static ResultSet resultSet=null;

public static String DriverClass=null;
public static String Url=null;
public static String user=null;
public static String PassWord=null;

static Properties properties=null;
public static Connection getConnection() throws Exception{
InputStream inputStream=Tools.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties=new Properties();
properties.load(inputStream);
DriverClass=properties.getProperty("DriverClass");
Url=properties.getProperty("Url");
user=properties.getProperty("User");
PassWord=properties.getProperty("PassWord");
Class.forName(DriverClass);
connection=DriverManager.getConnection(Url, user, PassWord);
return connection;

}
public static void update(String sql,Object...args) throws Exception{
connection=getConnection();
preparedStatement=(PreparedStatement) connection.prepareStatement(sql);
for(int i=0;i<args.length;i++){
preparedStatement.setObject(i+1, args[i]);
}
preparedStatement.executeUpdate();
}
public static void release(Connection connection,PreparedStatement preparedStatement,ResultSet
resultSet,ResultSetMetaData resultSetMetaData){
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

查询方法的测试方法

public <T> T getT(Class<T> clazz,String sql,Object...args) throws Exception{
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
ResultSetMetaData rsmd=null;
T entity=null;

connection=Tools.getConnection();
preparedStatement=(PreparedStatement) connection.prepareStatement(sql);
for(int i=0;i<args.length;i++){
preparedStatement.setObject(i+1, args[i]);
}
resultSet=(ResultSet) preparedStatement.executeQuery();
rsmd=(ResultSetMetaData) resultSet.getMetaData();
Map<String, Object> map=new HashMap<>();
while(resultSet.next()){
for(int i=0;i<rsmd.getColumnCount();i++){
String labelString=rsmd.getColumnLabel(i+1);
Object valueObject=resultSet.getObject(labelString);
map.put(labelString, valueObject);
}
}
if(map.size()>0){
entity=clazz.newInstance();
for(Map.Entry<String, Object> entry:map.entrySet()){
String fieldString=entry.getKey();
Object fieldoObject=entry.getValue();
ReflectionUtils.setFieldValue(entity, fieldString, fieldoObject);
}
}
return entity;

}

时间: 2024-10-26 14:13:12

Preparestatement 反射创建对象的相关文章

关于反射创建对象的演示

虽然网上有很多的做饭,但是对于新手的朋友们来说,并不是能够看得懂. 反射技术:可以对一个类进行解刨,首先要获取该类的字节码文件内容,并将内容都封装成了对象. 访问属性,方法,以及构造函数,然后在调用构造函数,创建对象. 调用空参数的构造函数用的是Class类中的newInstance方法. 调用带参数的构造函数用的是构造函数本身的newInstance方法. 在这里我只做了两种方法,利用反射创建对象,并调用方法,获取变量值. 对于我的这两种方式也有需要优化的地方,但是在这里我们只接受这两种方式.

C# 反射创建对象,包括创建引用外部程序集类的实例

1 #region 根据对象名成创建对象 2 /// <summary> 3 /// 根据对象名成创建对象 4 /// </summary> 5 /// <param name="assemblyName">程序集名称</param> 6 /// <param name="classFullName">类全称,包括命名空间</param> 7 /// <returns>对象的实例&l

C#反射--------创建对象实例

C#反射--------创建对象实例 C#创建对象实例共有三种方法 (1)通过System.Reflection.Assmbly里方法获得实例,主要根据类的Fullname和构造函数的参数创建实例,包括了私有和公有的,很强大  public object CreateInstance(string typeName);//使用区分大小写的方式找到指定的类型名称,FullName, public object CreateInstance(string typeName, bool ignoreC

再看ExpressionTree,Emit,反射创建对象性能对比

[前言] 前几日心血来潮想研究着做一个Spring框架,自然地就涉及到了Ioc容器对象创建的问题,研究怎么高性能地创建一个对象.第一联想到了Emit,兴致冲冲写了个Emit创建对象的工厂.在做性能测试的时候,发现居然比反射Activator.CreateInstance方法创建对象毫无优势可言.继而又写了个Expression Tree的对象工厂,发现和Emit不相上下,比起系统反射方法仍然无优势可言. 第一时间查看了园内大神们的研究,例如: Leven 的 探究.net对象的创建,质疑<再谈A

Java反射获取class对象的三种方式,反射创建对象的两种方式

Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName 静态方法. 前提:已明确类的全路径名. 第二种,使用 .class 方法. 说明:仅适合在编译前就已经明确要操作的 Class 第三种,使用类对象的 getClass() 方法. 适合有对象示例的情况下 package com.reflection; /** * Created by Liuxd

如何通过反射创建对象?

反射是java特有的一种机制,可以在程序运行的过程中,动态的获取类的属性和方法,那么怎么通过java的反射机制来创建对象呢,下面本文介绍一下. 先说一下反射的定义,java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性.目前反射机制也是java语言独有的.  首先创建一个学生类,包含年龄age,姓名name,构造方法和set,get方法,如图所示. https://jingyan.baidu.com/article/a37

反射创建对象

/// <summary> /// 创建对象实例 /// </summary> /// <typeparam name="T">要创建对象的类型</typeparam> /// <param name="assemblyName">类型所在程序集名称</param> /// <param name="nameSpace">类型所在命名空间</param>

java 使用反射创建对象时异常 InstantiationException: Caused by: java.lang.NoSuchMethodException:

|--异常现象 |--异常原因 需要实例化的类的无参方法被有参方法覆盖之后,导致无法创建对象 |--改正方法 给对应的类创建一个无参构造方法 |--改正后效果 原文地址:https://www.cnblogs.com/twuxian/p/11620138.html

利用反射创建对象必须要显式的声明构造方法吗?

可以不提供,只不过这样的话构造对象的时候一定要先拿到有参数的构造方法,然后赋予参数再构建对象.比如package cn.mldn.demo; import java.lang.reflect.Constructor; class Person{ // CTRL + K private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Ov