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

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

  • 相关阅读:
    运行 npm run dev 不能自动打开浏览器
    npm run dev 报错:Strings must use singlequote 的解决方法
    new和this
    new Object()、Object.create()、{}三种对象创建方式的区别
    Python 详解修饰器 附带 js使用修饰器
    Python
    react项目使用axios和Charles模拟数据接口
    react切换隐藏或显示状态(包含过渡动画)
    react里使用ref的几种方法
    js对象转数组
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11335094.html
Copyright © 2011-2022 走看看