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

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

  • 相关阅读:
    全局变量-静态变量
    System.Web.Optimization 找不到引用,教你如何解决?
    CSS text-decoration 属性
    HTML 5 <span> 标签
    [VS]
    C# 条件表达式max=(a>b)?a:b;含义
    vs 2017 Integrated Security 为sspi 含义
    Visual studio 利用Nuget 控制台安装已经下载好的插件
    使用INTERSECT运算符
    Oracle DB 使用子查询来解决查询
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11335094.html
Copyright © 2020-2023  润新知