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

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

  • 相关阅读:
    各种颜色对应的16进制
    django之旅 1.hello world
    FlexPaper文档在线浏览
    windwos下django 安装配置
    Josn 序列化
    WCF服务
    easy_install遇上Unable to find vcvarsall.bat
    Android开发环境搭建(jdk+eclip+android sdk)
    安卓系统架构图(转)
    windows8和windows server2012不联网安装.net 3.5(包括2.0和3.0)
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11335094.html
Copyright © 2011-2022 走看看