zoukankan      html  css  js  c++  java
  • 利用 Java 反射给 User 类中的每个属性变量赋予值 .


    public class JdbcTest {

    /**
    * 利用 Java 反射机制,写的一个通用查询方法
    *
    * @param sql
    */
    public <T> T query(Class<T> clazz, String sql, Object... args) {
    T entity = null;

    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    User user = null;

    try {
    connection = JdbcUtils.getConnection();
    // System.out.println(sql);
    preparedStatement = connection.prepareStatement(sql);
    if (args != null) {
    for (int i = 0; i < args.length; i++) {
    preparedStatement.setObject(i + 1, args[i]);
    }
    }

    resultSet = preparedStatement.executeQuery();
    ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
    Map<String, Object> values = new HashMap<String, Object>();


    if (resultSet.next()) {
    for (int i = 0; i < resultSetMetaData.getColumnCount(); i++) {
    String columnLable = resultSetMetaData.getColumnLabel(i + 1);
    Object columnValue = resultSet.getObject(i + 1);
    values.put(columnLable, columnValue);
    }
    }

    System.out.println("--->数据库:"+values);
    if (values.size() > 0) {
    entity = (T) clazz.newInstance();
    for (Entry<String, Object> entry : values.entrySet()) {
    String fieldName = entry.getKey();
    Object fieldValue = entry.getValue();
    Field field = clazz.getDeclaredField(fieldName);
    field.setAccessible(true);
    field.set(entity, fieldValue);
    }
    }

    } catch (Exception e) {
    e.printStackTrace(http://www.amjmh.com/v/BIBRGZ_558768/);
    } finally {
    JdbcUtils.release(preparedStatement, connection, resultSet);
    }
    return entity;
    }

    @Test
    public void qurey() {
    String sql = "SELECT user_name userName,password password,register_time registerTime,"
    + "sex sex,user_role userRole,id_card idCard FROM user WHERE user_name=?";
    User user = query(User.class, sql, "小王");
    System.out.println("--->反射到 User 类中:"+user.toString());
    }
    }

    ---------------------

  • 相关阅读:
    Asp.net把UTF-8编码转换为GB2312编码
    润乾报表中文传参乱码的问题
    润乾报表中填报中文出现乱码
    SQL Developer不能删除和复制及部分键失效问题
    .NET类型转换的常用方式
    .net中三种数据类型转换区别((int),Int32.Parse() 和 Convert.toInt32() )
    什么是SFP光模块?
    什么是"双活"
    存储软件特性
    【分享】给自己的博客园添加一个板娘(可选)
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11335094.html
Copyright © 2011-2022 走看看