Javaweb dbutilsがSQLコマンドを実行して結果セットを通過するときにコンテンツを見つけることができない理由は次のとおりです。
結果セットを通過するとき、Beanオブジェクトをトラバースするだけで、コンテンツの最初の行のみが出力されます(最初の行はユーザーエンティティクラスによってインスタンス化されたオブジェクトです)ので、ここでは、対応するコンテンツをオブジェクトを介して呼び出すにはre.getRepotableName()が必要です。
このようにして、値を取得できます
PS:Javawebのdbutilsは次のように詳細です。
1。dbutilsとその機能は何ですか
dbutilsはApacheによって書かれています。 dbutilsは、Javaプログラミングの実用的なデータベース操作ツールであり、小さく、シンプルで実用的です。
dbutilsはJDBCの操作をカプセル化し、JDBCの操作を簡素化します。より少ないコードを書くことができます。
1。データテーブルの読み取り操作の場合、結果をリスト、配列、セットなどのJavaコレクションに変換できます。これは、プログラマーが操作するのに便利です。
2。データテーブルの執筆も非常に簡単です(SQLステートメントを書くだけです)
3.データソースを使用したり、JNDI、データベース接続プーリング、その他のテクノロジーを使用して、パフォーマンスリューズを最適化します。
2。Dbutilsの3つのコアオブジェクト
2.1。 QueryRunnerクラス
QueryRunnerは、SQLステートメントを操作するためのAPIを提供します。 3つの主な方法があります。Query()は、select、update()を実行するために使用されますupdate delete、batch()はbatch処理を実行するために使用されます。以下では、これらの方法の使用を詳細に紹介します。
2.2。結果Ethandlerインターフェイス
選択された操作後に結果セットをカプセル化する方法を定義するために使用されます。合計9つの一般的に使用される実装クラスがあります。使用方法を詳細に紹介します。
2.3。 dbutilsクラス
これは、リソースを閉じる方法とトランザクション処理の方法を定義するツールクラスです
3。dbutilsフレームワークの使用方法
3.1。手順を使用します
対応するJARパッケージをインポートします
QueryRunnerオブジェクトを作成します
クエリメソッドを使用して、Selectステートメントを実行します
結果を使用して結果セットをカプセル化します
dbutilsクラスを使用してリソースをリリースします
3.2。例
注:C3P0接続プールを使用しています
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.dbutilseThandler; 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 qr = une try {// new resultsEthandler <list <user >>結果セットリスト<ユーザー> list = qr.query( "select * from user"、new resultEthandler <userride <userride // queryステートメントが選択されたステートメントを実行した後、結果はreturn Value <ユーザー<ユーザー<ユーザー<ユーザーリスト> fide> fults> fide> fid> fide <ユーザー> Arraylist <ユーザー();リスト; 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 = 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(); }}} 4。dbutilsの3つのコアオブジェクトの詳細な説明
4.1。 QueryRunnerオブジェクト
4.1.1。コンストラクタ
new QueryRunner();そのトランザクションは手動で制御できます。
言い換えれば、このオブジェクトで呼び出されるメソッド(クエリ、更新、バッチなど)には接続オブジェクトが必要です。
新しいQueryRunner(DataSource DS);そのトランザクションは自動的に制御されます。 1つのSQLと1つのトランザクション。
このオブジェクトで呼び出されるメソッド(クエリ、更新、バッチなど)には接続オブジェクトはありません。
4.1.2。一般的な方法
4.2。結果Ethandlerインターフェイス
4.2.1。 9つの結果プロセッサがあります
ArrayHandler:1つのレコードに適しています。レコードの各列を配列オブジェクトにカプセル化します[]
ArrayListhandler:複数のレコードに適しています。各レコードの各列値を配列オブジェクト[]にカプセル化し、配列をリストcolumnListhandlerにカプセル化します。特定の列のデータを取得します。リストにカプセル化されています。
KeyEdhandler:複数のレコードを取得し、各レコードが1つのマップにカプセル化され、このマップを別のマップにカプセル化します。キーは指定されたフィールド値です。
Maphandler:1レコードに適しています。現在のレコードの列名と列値を1つのマップMapListhandlerに置きます。複数のレコードに適しています。各レコードをマップにカプセル化してから、マップをリストにカプセル化しますscalarhandler:シングルローおよびシングル列のデータbeanhandlerに適しています
Beanlisthandler
4.2.2。例
static org.junit.assert。*; import java.sql.sqlexception; Import java.util.list; import java.util.map.entry; import java.util.map.entry; import org.apache.commons.dbutils.queryrunner; Import org.apache.commons.dbutils.arrynhnedlerrers 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.lers.maphandler; org.apache.commons.dbutils.handlers.maplisthandler; Import org.apache.commons.dbutils.handlers.scalarhandler; Import org.junit.test; Import org.jxlg.domain.user; public class testResultsethler {@test public void arrabable:{)レコードの値の各列を配列オブジェクトにカプセル化します[] queryrunner qr = new queryrunner(c3p0util.getDataSource()); try {object [] o = qr.query( "select * from user where id =?"、new arrayhandler()、5); for(オブジェクトオブジェクト:o){system.out.println(object); }} catch(sqlexception e){e.printstacktrace(); }} @test public void test2()sqlexception {// arraylisthandler:複数のレコードに適しています。各レコードの各列を配列オブジェクト[]にカプセル化し、配列をリストにカプセル化しますlist <object []> list = qr.query( "select * from user"、new arraylisthandler()); for(object [] objects:list){for(object:objects){system.out.println(object); } System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } } @Test public void test3()スロー{// columnlisthandler:queryrunnerのデータを取得します。 system.out.println(オブジェクト)} @test public void test4()スロー{//キーエドラー://このマップを別のマップにパッケージ化します。テーブル内のデータ、および小さなマップのキーはテーブルの列名であるため、大きなマップのキーはオブジェクトタイプを使用し、文字列は小さな<文字列>> qr.query( "select * from user"、new keyedhandler(1)ですIDは、「1」が設定されているためです。 1つのレコードに適していますquryrunner(c3p0util.getdatasource())に現在のレコードを置きます。 System.out.println(m.getKey()+"/t"+m.getValue()); queryrunner(c3p0util.getDataSource()); System.out.println( "-------------"); System.out.println(o); System.out.println(user)}}5。dbutilsを使用して、追加、削除、変更、検索の例を作成します
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(edtest); // queryrunnerオブジェクトqueryrunner qr = new queryrunner(c3p0util.getdatasource())を作成します。 try {qr.update( "inserting Intoユーザー(ユーザー名、パスワード、電子メール、誕生日)値(?、?、?)"、 "guapi"、 "4646"、 "[email protected]"、new date()); } catch(sqlexception e){e.printstacktrace(); }} @test public void testupdate(){// queryrunnerオブジェクトqueryrunner qr = new queryrunner(c3p0util.getdatasource()); try {qr.update( "ユーザーセット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( "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ステートメントが(int i = 0; i <params.length; i ++){params [i] = new object [] {"guapi"+i、 "4646"、 "[email protected]"、new Date()}; } qr.batch( "inserting Intoユーザー(ユーザー名、パスワード、電子メール、誕生日)値(?、?、?、?)"、params); } catch(sqlexception e){e.printstacktrace(); }}}要約します
上記は、SQLコマンドを実行して結果セットを横断するときにJavaweb dbutilsが見つからない理由です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comへのご支援ありがとうございます!