我不是懒惰,网上搜了几小时了,没找到合适的我想要个很简单的封装类,类似这样:public List getRows(String sql)public boolean saveUpdateDelete(String sql)就是查询的时候,传一个sql语句,返回一个list,新增的时候也是传一条sql以前尝试写过一个resultSet到VO的映射,但因为不知道怎么得到数据类型,写了一半就放弃了,现在也找不到了。因为只是小应用,数据库操作很少,太复杂的就没必要了。安全点就行。

解决方案 »

  1.   

    有啊,这样的用的很少,一般都是在程序中去写sql的。
      

  2.   

    前几天实现过,不过entity文件的属性名称需要与数据库表的列名称一致。
    现在没在家,等回去了给你发份。
      

  3.   

    对ResultSet 进行封装:/**
     * 自己写的jdbc 连接数据库的模板。
     * @author Administrator
     *
     */
    public class JdbcTemp { /**
     * @param args
     */
    public static void main(String[] args) {
    JdbcTemp jt = new JdbcTemp();
    // String sql = "select * from dept";
    // List ls = jt.findObject(jt.getConnection(), sql);
    // for (int i = 0; i < ls.size(); i++) {
    // System.out.println(ls.get(i));
    // }
    String sql1 = "delete from dept where deptid=3";
    jt.update(jt.getConnection(), sql1);
    } /**
     * 获取连接
     * 
     * @return
     */
    public Connection getConnection() {
    Connection conn = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/demo", "root", "root");
    } catch (SQLException e) {
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    return conn;
    } /**
     * 查
     * 
     * @param conn
     * @param sql
     * @return
     */
    public List<Map<String, Object>> findObject(Connection conn, String sql) {
    PreparedStatement ps = null;
    ResultSet rs = null;
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    try {
    ps = conn.prepareStatement(sql);
    rs = ps.executeQuery();
    ResultSetMetaData rmd = rs.getMetaData();
    while (rs.next()) {// 获取行数据
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    for (int i = 1; i <= rmd.getColumnCount(); i++) {
    map.put(rmd.getColumnName(i), rs.getObject(i));// getObect(i)作用是获取当前行指定列的数据。
    }
    list.add(map);
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return list;
    } /**
     * 增、删、改
     * 
     * @param conn
     * @param sql
     */
    public void update(Connection conn, String sql) {
    try {
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.executeUpdate();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
      

  4.   

    commens DB 提供了db的基础方法,你可以参考或者 Spring jdbc Template
      

  5.   

    5楼的代码是不可取的。
    每次通过getConnection函数来获取Connection是不明智的。
    因为建立连接,释放连接所产生的资源消耗过大。在小系统中可能无法察觉,一旦系统做大了,尤其是在高频率访问数据库或要求并发性能的时候,此方式更加容易导致系统变慢。所以,一般情况下都是通过连接池的方式,减少Connection对象连接与释放相关操作。而我们常使用的Hibernate等一些持久层框架以及一些web容器,都会采用连接池的方式来维护数据库连接。
      

  6.   

    谢谢你的指点。
    这是个练习,实际应用时当然不能直接获得connection对象了。
    一般就是配置连接池。
      

  7.   


    直接用连接池。  不想自己写,可以用JDK 或 第三方的。
      

  8.   

    建议楼主使用Spring Jdbc,使用也挺方便,引入一个包即可。