Javaweb dbutils가 SQL 명령을 실행하고 결과 세트를 가로 질러 컨텐츠를 찾을 수없는 이유는 다음과 같습니다.
결과 세트를 통과 할 때 Bean 객체만을 가로 지르는 첫 번째 컨텐츠 라인 만 출력합니다 (첫 번째 줄은 userentity 클래스에 의해 인스턴스화 된 객체입니다). 여기에서 해당 컨텐츠를 객체를 통해 호출하려면 Re.getRepotablename ()이 필요합니다.
이런 식으로 값을 얻을 수 있습니다
추신 : Javaweb의 dbutils는 다음과 같이 자세히 설명되어 있습니다.
1. dbutils와 그 기능은 무엇입니까?
Dbutils는 Apache가 작성했습니다. DBUTILS는 작고 간단하며 실용적으로 Java 프로그래밍의 실용적인 데이터베이스 작동 도구입니다.
DBUTILS는 JDBC에서의 작업을 캡슐화하여 JDBC의 작업을 단순화합니다. 더 적은 코드를 쓸 수 있습니다.
1. 데이터 테이블 읽기 작업의 경우 결과를 목록, 배열, 세트 등과 같은 Java 컬렉션으로 변환 할 수 있으며, 이는 프로그래머가 작동하기 편리합니다.
2. 데이터 테이블의 쓰기 작업도 매우 간단합니다 (SQL 문을 작성하십시오)
3. 데이터 소스를 사용하고 JNDI, 데이터베이스 연결 풀링 및 기타 기술을 사용하여 이미 구축 된 데이터베이스 연결 개체를 최적화 할 수 있습니다.
2. dbutils의 세 가지 핵심 물체
2.1. QueryRunner 클래스
QueryRunner는 SQL 문을 작동하기위한 API를 제공합니다. 세 가지 주요 방법이 있습니다. Query ()는 Select를 실행하는 데 사용됩니다. update ()는 삽입 업데이트 삭제를 수행하는 데 사용됩니다. Batch ()는 배치 처리를 수행하는 데 사용됩니다. 다음은 이러한 방법의 사용법을 자세히 소개합니다.
2.2. 결과에 대한 인터페이스
선택 작업 후 결과 세트를 캡슐화하는 방법을 정의하는 데 사용됩니다. 총 9 개의 일반적으로 사용되는 구현 클래스가 있습니다. 나는 그것을 사용하는 방법에 대해 자세히 소개하겠습니다.
2.3. dbutils 클래스
리소스 폐쇄 및 거래 처리 방법을 정의하는 도구 클래스입니다.
3. dbutils 프레임 워크 사용 방법
3.1. 단계를 사용하십시오
해당 JAR 패키지를 가져옵니다
QueryRunner 객체를 만듭니다
쿼리 메소드를 사용하여 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.dbutilsethands.resetsethandler; 수입 org.apache.commons.dbutils.handlers.beanlisthandler; import org.junit.test; import com.jxlg.domain.user; public class testelect {@test public void testelect () {// queryrunner queryrunner qr = new queryrunner (c3p0util.getdatource); {// new resultsethandler <list <user>> 결과 세트 세트 목록 <user> list = qr.query ( "select * from user", new resultsetHandler <list <user>> () {@override // 쿼리 문이 선정 된 문을 실행 한 후 결과는 <사용자 목록 (resultset rs) s (resultset rs) strows strows strows sylectement <usercence <usercence <usercence <usercome <usercence <usercence <usercome <usercome> arraylist <next (); } return list;}}); for (user user : list) {system.out.println (사용자); }} catch (sqlexception e) {e.printstacktrace (); }} @Test public void testSelect2 () {// QueryRunner 객체 QueryRunner QR = New QueryRunner를 만듭니다 (c3p0util.getDatasource ()); {// SQL 문을 실행하고 결과 목록 <user> list = qr.query ( "select * where id =? and username =?", new Beanlisthandler <user> (user.class), "tom"); for (user user : list) {system.out.println (사용자); }} catch (sqlexception e) {e.printstacktrace (); }}} 4. dbutils의 세 가지 핵심 물체에 대한 자세한 설명
4.1. QueryRunner 객체
4.1.1. 건설자
새로운 QueryRunner (); 거래는 수동으로 제어 될 수 있습니다.
다시 말해,이 개체가 호출하는 메소드 (예 : 쿼리, 업데이트, 배치)에 연결 객체가 있어야합니다.
새로운 QueryRunner (DataSource DS); 거래는 자동으로 제어됩니다. 하나의 SQL과 하나의 트랜잭션.
이 개체에서 호출 된 메소드 (예 : 쿼리, 업데이트, 배치)에 연결 객체가 없습니다.
4.1.2. 일반적인 방법
4.2. 결과에 대한 인터페이스
4.2.1. 9 개의 결과 프로세서가 있습니다
ArrayHandler : 1 레코드에 적합합니다. 레코드의 각 열을 배열 객체로 캡슐화합니다 []
Arraylisthandler : 여러 레코드에 적합합니다. 각 레코드의 각 열 값을 배열 객체 []로 캡슐화하고 배열을 목록 Columnlisthandler로 캡슐화합니다. 특정 열의 데이터를 가져옵니다. 목록에 캡슐화되었습니다.
KeyedHandler : 여러 레코드를 가져 가면 각 레코드가 하나의 맵으로 캡슐화 된 다음이 맵을 다른 맵으로 캡슐화하고 키는 지정된 필드 값입니다.
Maphandler : 1 레코드에 적합합니다. 현재 레코드의 열 이름과 열 값을 하나의 맵 Maplisthandler : 여러 레코드에 적합합니다. 각 레코드를 맵으로 캡슐화 한 다음 맵을 List ScalarHandler로 캡슐화하십시오 : 단일 행 및 단일 열 데이터 BeanHandler에 적합합니다.
Beanlisthandler
4.2.2. 예
import static org.junit.assert.*; import java.sql.sqlexcept; import java.util.list; import java.util.map; import java.util.map.entry; import org.apache.commons.dbutil.queryrunner; import org.apache.commons.dbutil.dbutil.dbutil; 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; 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 () {) {// arayhand for witted. 레코드 값의 각 열을 배열 객체 [] QueryRunner qr = new QueryRunner (C3p0util.getDatasource ())로 캡슐화합니다. {object [] o = qr.query ( "select * where id =?", new ArrayHandler (), 5); for (Object Object : o) {System.out.println (Object); }} catch (sqlexception e) {e.printstacktrace (); }} @test public void test2 ()는 sqlexception {// arraylisthandler : 여러 레코드에 적합합니다. 각 레코드의 각 열을 배열 객체 []로 캡슐화하고 배열을 목록 QueryRunner QR = New QueryRunner (C3P0UTIL.GetDatasource ())로 캡슐화합니다. list <object []> list = qr.query ( "select * from user", new arraylisthandler ()); for (object [] 객체 : list) {for (Object : Objects) {System.out.println (Object); } System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } } @Test public void test3 () sqlexection {// columnlisthandler : queryrunner qr = new queryRunner (c3p0util.getDatasource ())에 캡슐화됩니다. System.out.println (object)} @test public void test4 ()는 sqlexception {// keyedhandler : 각 레코드는 맵에 캡슐화되며,이 맵은 다른 QR = QueryRunner (c3p0Utilner)입니다. 테이블의 데이터와 작은 맵의 열쇠는 표의 열이므로 큰 맵의 키는 객체 유형을 사용하고 문자열은 <개의 객체, 객체 >> map = qr.query ( "select * from user", new keyedhandler (1)입니다 "1"은 (map.entry <string, object> mm : m.getValue (). entryset (mm); // 작은지도에서 키와 값을 꺼내기 때문에. 1 레코드에 적합합니다. QueryRunner QR = New QueryRunner에 현재 레코드의 열 이름과 열 값을 넣으십시오 (c3p0util.getDatasource ()); system.out.println (m.getkey ()+"/t"+m.getValue ()); // 다른 행으로 이동하여 조건을 추가해야합니다}} @test public void test6 ()는 sqlexception {// maplisthandler를 캡슐화합니다. QueryRunner (c3p0util.getDatasource ()); System.out.println ( "------------")} @test public void test7 ()는 sqlexception {// scalarhandler qr = new queryrunner (c3p0util.getDatasource ()); system.out.println (o)} @test public void test8 ()는 sqlexception {// beanhandler : QueryRunner qr = 새로운 queryrunner (c3p0util.getDatasource = qr.query); System.out.println (사용자)};5. dbutils를 사용하여 추가, 삭제, 수정 및 검색의 예를 들어
import static org.junit.assert.*; import java.sql.sqlexcept; import java.util.date; import javax.crypto.spec.oaepparameterspec; import org.apache.commons.dbutils.queryRunner; import org.junit.test (public testincurd {) @Todesterd {@Todesterd {) // QueryRunner 개체 생성 QueryRunner QR = New QueryRunner (C3P0UTIL.GetDatasource ()); {qr.update ( "사용자에 삽입 (사용자 이름, 암호, 이메일, 생일) 값 (?,?,?,?)", "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 ( "Usude 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 ( "id =?", 4); } catch (sqlexception e) {e.printstacktrace (); }} @test public void testbatch () {// QueryRunner 객체 QueryRunner qr = new QueryRunner를 만듭니다 (c3p0util.getDatasource ()); try {object [] [] params = new Object [10] []; // 고차원은 (int i = 0; i <params.length; i ++) {params [i] = new Object [] { "guapi"+i, "4646", "[email protected]", new Date ()} } qr.batch ( "사용자 (사용자 이름, 암호, 이메일, 생일) 값 (?,?,?,?)에 삽입", params); } catch (sqlexception e) {e.printstacktrace (); }}} 요약
위의 것은 SQL 명령을 실행하고 결과 세트를 가로 질러 Javaweb Dbutils를 찾을 수없는 이유입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com을 지원해 주셔서 대단히 감사합니다!