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

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

  • 相关阅读:
    Python并发(一)
    Python协程详解(二)
    Python协程详解(一)
    Python装饰器
    ●BZOJ 3676 [Apio2014]回文串
    ●POJ 3974 Palindrome(Manacher)
    ●BZOJ 1692 [Usaco2007 Dec]队列变换
    ●BZOJ 4698 Sdoi2008 Sandy的卡片
    ●BZOJ 4516 [Sdoi2016]生成魔咒
    ●BZOJ 3238 [Ahoi2013]差异
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11335094.html
Copyright © 2011-2022 走看看