`
michaels888
  • 浏览: 6943 次
社区版块
存档分类
最新评论

statement写通用的update方法、通用的查询方法(获取一条或多条)

    博客分类:
  • JDBC
阅读更多

public class TestJDBC {
 @Test
 public void test3(){
//  String sql = "select id, name, email, birth from customers where id <10";
//  List<Customer> list = getForList(sql, Customer.class);
//  for(Customer customer : list){
//   System.out.println(customer);
//  }
  String sql1 = "select order_id id, order_name name, order_date date from `order` where order_id <3";
  List<Order> list1 = getForList(sql1, Order.class);
  for(Order order : list1){
   System.out.println(order);
  }
 }
 
 
 // 通用的查询方法,返回多个对象的集合(version 1.0)
 public <T> List<T> getForList(String sql, Class<T> clazz){
  Connection connection = null;
  Statement s = null;
  ResultSet rs = null;
  try {
   connection = JDBCUtils.getConnection();
   s = connection.createStatement();
   rs = s.executeQuery(sql);
   ResultSetMetaData rsmd = rs.getMetaData();
   //获取列的个数
   int count = rsmd.getColumnCount();
   List<T> list = new ArrayList<T>();
   while(rs.next()){
    T t = clazz.newInstance();
    for(int i=0;i<count; i++){
     Object columnValue = rs.getObject(i+1);// 获取列值
     // getColumnLabel():获取列的别名,此别名由java类的属性名决定
     String columnLable = rsmd.getColumnLabel(i+1);
     PropertyUtils.setProperty(t, columnLable, columnValue);    
    }
    list.add(t);
   }
   return list;
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   JDBCUtils.close(rs, s, connection);   
  }
  return null;
 }
 
 @Test
 public void test2(){
  String sql = "select id, name, email, birth from customers where id = 22;";
   Customer customer = getInstance(sql,Customer.class);
   System.out.println(customer);
 }
 // 通用的查询方法,返回一个对象(version 1.0)
 public <T>T getInstance(String sql, Class<T> clazz){
  Connection connection = null;
  Statement s = null;
  ResultSet rs = null;
  try {
   connection = JDBCUtils.getConnection();
   s = connection.createStatement();
   rs = s.executeQuery(sql);
   ResultSetMetaData rsmd = rs.getMetaData();
   // getColumnCount():获取结果集的列数
   int count = rsmd.getColumnCount();
   while(rs.next()){
    T t = clazz.newInstance();
    for(int i=0; i<count; i++){
     // 获取列值
     Object columnValue = rs.getObject(i + 1);
     // getColumnLabel():获取列的别名,此别名由java类的属性名决定
     String columnLable = rsmd.getColumnLabel(i + 1);
     PropertyUtils.setProperty(t, columnLable, columnValue);
    }
    return t;
   }
  }  catch (Exception e) {
   e.printStackTrace();
  }finally{
   JDBCUtils.close(rs, s, connection);   
  }
  return null;
 }
 
 @Test
 public void test(){
  String sql = "insert into customers(name, email, birth) values('shawn', 'shawn@163.com', '1998-09-09')";
  update(sql);
 }
 // 通用的增、删、改的方法(version 1.0)
 public void update(String sql){
  Connection connection = null;
  Statement s = null;
  try {
   connection = JDBCUtils.getConnection();
   s = connection.createStatement();
   s.execute(sql);
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   JDBCUtils.close(null, s, connection);
  }
 }
 @Test
 public void test1() throws Exception{
  Connection connection = JDBCUtils.getConnection();
  System.out.println(connection);
 }
}

分享到:
评论

相关推荐

    Blog(MySql中通用查询处理流程)配套示例代码

    在通用查询处理流程中,可能涉及到SELECT、INSERT、UPDATE或DELETE等语句。例如,一个简单的查询可能如下所示:`std::string query = "SELECT * FROM table_name";` 4. **预处理和执行**: 使用`sql::...

    我的通用DAO理解.rar

    DAO类应该提供了这些操作的接口或方法,例如`insert()`、`select()`、`update()`和`delete()`。 3. 参数处理:为了执行SQL语句,DAO需要能够处理参数。这可能通过预编译的`PreparedStatement`实现,以防止SQL注入...

    java-连接SQL测试

    在多条SQL语句需要一起成功或一起失败的情况下,我们可以使用`Connection`对象的`setAutoCommit(false)`来开启手动事务,然后在所有操作完成后再调用`commit()`提交事务,或者在发生错误时调用`rollback()`回滚事务...

    DBUtils(通用的数据库工具类)

    3. **批处理操作**:DBUtils支持批处理更新,可以一次提交多条SQL语句,提高了数据库操作的效率。 4. **QueryRunner**:QueryRunner是DBUtils中的核心类,提供了执行SQL查询和更新的方法。它可以执行简单的SQL语句...

    MySQL工具类

    4. **批处理执行**:当需要执行多条SQL时,提供批处理接口。 ```java public static void batchExecute(Connection conn, List&lt;String&gt; sqlList) throws SQLException { PreparedStatement pstmt = conn.prepare...

    自己搭建的jdbc+mysql项目供新手学习使用(完整项目,包含相关需要的jar包,jdbcutils,工具类)

    7. **事务管理**:如果涉及多条SQL语句的原子性操作,可能需要使用`Connection`的`setAutoCommit()`方法禁用自动提交,并通过`commit()`或`rollback()`手动控制事务。 通过这个项目,新手可以学习到如何配置数据库...

    JDBC数据操作封装

    4. **执行SQL**:调用Statement或PreparedStatement的方法,如`executeQuery()`(查询)或`executeUpdate()`(非查询)。 5. **处理结果**:如果执行的是查询,可以通过ResultSet获取结果;非查询操作则会返回受影响...

    commons-dbutils-1.3

    3. **批量更新**:`QueryRunner`还支持批量更新操作,如`runBatch()`,可以用于执行多条DML(数据操纵语言)语句,如INSERT、UPDATE或DELETE,提高数据库操作效率。 4. **通用的数据库连接管理**:DBUtils提供了`...

    java jdbc 反射 word学习文档

    批处理允许一次性执行多条SQL语句,从而提高性能。 #### 十四、分页 在处理大量数据时,分页是非常有用的。通过限制查询结果的数量,可以提高响应速度和用户体验。 #### 十五、可更新结果集、敏感结果集 - **可...

    IQ 15.3 SQL语句和参数设置参考手册

    在Sybase IQ 15.3中,每一条SQL语句都可能附带一个声明适用性指示器,用以标明该语句是否适用于特定的环境或条件。这对于理解特定语句的适用范围非常有帮助。 #### 八、总结 Sybase IQ 15.3通过引入DQP功能和支持...

    JSP数据库通用模块开发与系统移植(源代码+所有Jar包)

    3. **事务管理**:在处理涉及多条记录的复杂操作时,事务提供了原子性、一致性、隔离性和持久性的保障。 压缩包中的"lib"文件夹可能包含了项目所需的外部库,例如JDBC驱动,这些jar包是连接到MySQL数据库所必需的。...

    ASP入门教程1小时ASP入门_非常简单

    `rs.Open`用于打开数据库,`rs.MoveFirst`将指针移动到第一条记录,然后使用`While...Not rs.EOF`循环遍历记录,`rs("fieldName")`获取字段值,并使用`Response.Write`输出到客户端浏览器。最后,`rs.MoveNext`移动...

    java(jdbc)学习

    批处理允许一次性执行多条SQL语句,减少了网络往返次数,提高了批量数据处理的效率。 #### 十二、JDBC其他API 包括可滚动结果集、分页技术和可更新结果集等功能,进一步增强了JDBC的灵活性和功能。 #### 十三、...

    JDBC封装.rar

    - **事务管理**:对于涉及多条数据库操作的方法,可以添加事务控制。 4. **JDBC封装实例** - `DBUtil` 类:负责建立和关闭连接,如`getConnection()` 和 `closeResources(Connection conn, Statement stmt, ...

    impalaJDBC41

    2. **执行SQL查询**:利用`Statement`或`PreparedStatement`对象,可以发送SELECT、INSERT、UPDATE、DELETE等SQL语句。 3. **处理结果集**:从查询返回的结果集中获取数据,可以逐行遍历,或者通过`...

    JAVA学生管理系统+JDBC

    4. **事务管理**:在多条SQL语句需要一起成功或一起失败时,使用begin、commit、rollback等方法进行事务管理。 5. **异常处理**:在执行SQL过程中可能出现的异常,如SQLException,需要进行捕获和处理,确保程序的...

    JDBC API数据库编程实作教材

    - `addBatch()`与`executeBatch()`: 批处理可以一次执行多条SQL,提高效率。 7. **数据库连接池** - 连接池(如C3P0、HikariCP、Apache DBCP)管理数据库连接,避免频繁创建和销毁,提升系统性能。 8. **JDBC的...

    java语言程序设计Bonus chapter38

    其次,批处理模式的执行是指将多条SQL语句合并在一起,一次性发送给数据库服务器执行,这样可以显著提高性能。批处理模式下执行的SQL语句包括INSERT、UPDATE、DELETE和DML语句,这种模式特别适合于需要批量插入或...

    laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

    // 获取第一条数据 $result = DB::table('students')-&gt;where('id', 1)-&gt;first(); // 获取指定字段的值 $name = DB::table('students')-&gt;where('id', 1)-&gt;value('name'); // 获取指定字段的所有值 $names = DB::...

Global site tag (gtag.js) - Google Analytics