亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

發布時間:2021-07-16 10:57:45 來源:億速云 閱讀:170 作者:小新 欄目:編程語言

這篇文章主要介紹JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

JAVAWEB dbutils執行sql命令并遍歷結果集時不能查到內容的原因及處理方法如下所示:

遍歷結果集時只遍歷bean對象才會只輸出第一行那種內容(第一行是輸出了UserEntity類實例化的對象),所以這里需要 re.getRepoTableName() 才能通過對象調用相對應的內容

這樣一來,就可以取到值了

JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

PS:JavaWeb之DBUtils詳細介紹如下所示:

一、什么是DBUtils及作用

  DBUtils是apache公司寫的。DBUtils是java編程中的數據庫操作實用工具,小巧簡單實用。

  DBUtils封裝了對JDBC的操作,簡化了JDBC操作。可以少寫代碼。

  1.對于數據表的讀操作,他可以把結果轉換成List,Array,Set等java集合,便于程序員操作;

  2.對于數據表的寫操作,也變得很簡單(只需寫sql語句)

  3.可以使用數據源,使用JNDI,數據庫連接池等技術來優化性能--重用已經構建好的數據庫連接對象

二、DBUtils的三個核心對象

  2.1、QueryRunner類

    QueryRunner中提供對sql語句操作的API.它主要有三個方法:query() 用于執行select,update() 用于執行insert update delete,batch() 批處理。等下下面的會詳細的介紹這幾種方法的用法。

  2.2、ResultSetHandler接口

    用于定義select操作后,怎樣封裝結果集.它總共有9個常用的實現類,下面我會詳細的為大家介紹怎么去使用。

  2.3、DbUtils類

    它就是一個工具類,定義了關閉資源與事務處理的方法

三、怎么去使用DBUtils框架

  3.1、使用步驟

    導入相對應的jar包

    創建QueryRunner對象

      使用query方法執行select語句

      使用ResultSetHandler封裝結果集

      使用DbUtils類釋放資源

  3.2、實例

    注:本人使用的是C3P0連接池

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;
import com.jxlg.domain.User;
public class TestSelect {
 @Test
 public void testSelect(){
 //創建一個QueryRunner對象
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 try {
  // new ResultSetHandler<List<User>>告訴我們如何封裝結果集
  List<User> list = qr.query("select * from user", new ResultSetHandler<List<User>>(){
  @Override
  //query語句執行select語句后,結果一返回值的形式傳遞過來
  public List<User> handle(ResultSet rs) throws SQLException {
   List<User> list = new ArrayList<User>();
   while(rs.next()){
   User u = new User();
   u.setId(rs.getInt(1));
   u.setUsername(rs.getString(2));
   u.setPassword(rs.getString(3));
   u.setEmail(rs.getString(4));
   u.setBirthday(rs.getDate(5));
   list.add(u);
   }
   return list;
  }
  });
  for (User user : list) {
  System.out.println(user);
  }
 } catch (SQLException e) {
  e.printStackTrace();
 }
}
 @Test
 public void testSelect2(){
 //創建一個QueryRunner對象
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 try {
  //執行sql語句,返回結果
  List<User> list = qr.query("select * from user where id=? and username=?", new BeanListHandler<User>(User.class),1,"tom");
  for (User user : list) {
  System.out.println(user);
  }
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
}

四、DBUtils三個核心對象詳解

  4.1、QueryRunner對象

    4.1.1、構造函數

         new QueryRunner(); 它的事務可以手動控制。                    

也就是說此對象調用的方法(如:query、update、batch)參數中要有Connection對象。

           new QueryRunner(DataSource ds); 它的事務是自動控制的。一個sql一個事務。                           

此對象調用的方法(如:query、update、batrch)參數中無需Connection對象。

    4.1.2、常用方法 

JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

   JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

        JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

        JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

        JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么

  4.2、ResultSetHandler接口

    4.2.1、它有9個結果處理器

      ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個數組中Object[]
      ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個數組中Object[],把數組封裝到一個List中
      ColumnListHandler:取某一列的數據。封裝到List中。
      KeyedHandler:取多條記錄,每一條記錄封裝到一個Map中,再把這個Map封裝到另外一個Map中,key為指定的字段值。
      MapHandler:適合取1條記錄。把當前記錄的列名和列值放到一個Map中
      MapListHandler:適合取多條記錄。把每條記錄封裝到一個Map中,再把Map封裝到List中
      ScalarHandler:適合取單行單列數據
      BeanHandler
      BeanListHandler

    4.2.2、實例       

import static org.junit.Assert.*;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
import com.jxlg.domain.User;
public class TestResultSetHandler {
 @Test
 public void test1() {
 //ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個數組中Object[]
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 try {
  Object[] o = qr.query("select * from user where id=?", new ArrayHandler(),5);
  for (Object object : o) {
  System.out.println(object);
  }
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
 @Test
 public void test2() throws SQLException {
 //ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個數組中Object[],把數組封裝到一個List中
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 List<Object[]> list = qr.query("select * from user", new ArrayListHandler());
 for (Object[] objects : list) {
  for (Object object : objects) {
  System.out.println(object);
  }
  System.out.println("----------------------");
 }
 }
 @Test
 public void test3() throws SQLException {
 //ColumnListHandler:取某一列的數據。封裝到List中
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 List<Object> list = qr.query("select username,password from user ", new ColumnListHandler(1));
 for (Object object : list) {
  System.out.println(object);
 } 
 }
 @Test
 public void test4() throws SQLException {
 //KeyedHandler:取多條記錄,每一條記錄封裝到一個Map中,
 //再把這個Map封裝到另外一個Map中,key為指定的字段值。
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 //大的Map的key是表中的某列數據,小的Map的key是表的列名,所以大的map的key用的是Object類型,小的是String。
 Map<Object, Map<String, Object>> map = qr.query("select * from user", new KeyedHandler(1));
 for (Map.Entry<Object, Map<String,Object>> m : map.entrySet()) {
  System.out.println(m);//就是id至,因為設置了“1”.
  for (Map.Entry<String, Object> mm : m.getValue().entrySet()) {
  System.out.println(mm);//取出小map中的key和value
  }
  System.out.println("--------------------");
 }
 }
 @Test
 public void test5() throws SQLException {
 //MapHandler:適合取1條記錄。把當前記錄的列名和列值放到一個Map中
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 Map<String, Object> map = qr.query("select * from user", new MapHandler());
 for (Map.Entry<String, Object> m : map.entrySet()) {
  System.out.println(m.getKey()+"\t"+m.getValue());
  //默認取第一行數據,需要去其它行用where加條件
 }
 }
 @Test
 public void test6() throws SQLException {
 //MapListHandler:適合取多條記錄。把每條記錄封裝到一個Map中,再把Map封裝到List中
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 List<Map<String, Object>> list = qr.query("select * from user", new MapListHandler());
 for (Map<String, Object> map : list) {
  for (Map.Entry<String, Object> m : map.entrySet()) {
  System.out.println(m); 
  }
  System.out.println("-----------");
 }
 }
 @Test
 public void test7() throws SQLException {
 //ScalarHandler:適合取單行單列數據
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 Object o = qr.query("select * from user", new ScalarHandler(2));
 System.out.println(o);
 } 
 @Test
 public void test8() throws SQLException {
 //BeanHandler:適合取單行單列數據
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 User user = qr.query("select * from user", new BeanHandler<User>(User.class));
 System.out.println(user);
 } 
}

五、使用DBUtils做一個增刪改查的例子  

import static org.junit.Assert.*;
import java.sql.SQLException;
import java.util.Date;
import javax.crypto.spec.OAEPParameterSpec;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
public class TestInCURD {
 @Test
 public void testInsert() {
 //創建一個QueryRunner對象
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 try {
  qr.update("insert into user (username,password,email,birthday)values(?,?,?,?)", "guapi","4646","guapi@163.com",new Date());
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
 @Test
 public void testUpdate() {
 //創建一個QueryRunner對象
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 try {
  qr.update("update user set username=?,password=? where id=4 ", "meizimeizi","520520");
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
 @Test
 public void testDelete() {
 //創建一個QueryRunner對象
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 try {
  qr.update("delete from user where id=? ",4);
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
 @Test
 public void testBatch() {
 //創建一個QueryRunner對象
 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
 try {
  Object[][] params = new Object[10][]; //高維代表執行多少次sql語句
  for(int i =0;i<params.length;i++){
  params[i] =new Object[]{"guapi"+i,"4646","guapi@163.com",new Date()}; 
  }
  qr.batch("insert into user (username,password,email,birthday)values(?,?,?,?)", params );
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
}

以上是“JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

修武县| 双峰县| 岫岩| 西乌珠穆沁旗| 宝应县| 历史| 高青县| 鸡东县| 玉屏| 博兴县| 噶尔县| 清苑县| 长沙市| 博乐市| 苏尼特左旗| 于田县| 榆社县| 萝北县| 克东县| 南昌市| 乳山市| 绍兴县| 长岭县| 麻阳| 柞水县| 乌鲁木齐市| 四子王旗| 瓦房店市| 武川县| 志丹县| 赣榆县| 滦南县| 青铜峡市| 普宁市| 滁州市| 固原市| 福鼎市| 承德市| 安阳市| 满城县| 惠安县|