보통 toad 나 sqlgate처럼 쿼리를 한꺼번에 처리하는 SQL 툴들이 존재한다.
하지만 웹에서 구현하고자 한다면 아마도 각 쿼리를 구분하는 로직이 필요하다.
그런데 초기에 GKSql(영상보기) 을 작업할때
초반에 MySQL을 가지고 진행을 했었는데 MySQL jdbc는 옵션 하나로 다중 쿼리실행이 가능하다
옵션은 allowMultiQueries=true 커넥션 옵션에 추가를 해주면 가능하다
기본적인 JDBC 옵션은
jdbc:mysql://localhost:3306/test
이라면 뒤에 추가로
jdbc:mysql://localhost:3306/test?allowMultiQueries=true
위처럼 설정만 잡아주면 다중 쿼리를 한번의 실행으로 처리가 가능하다
but, mssql, oracle에는 이런 옵션이 없다 ㅠㅠ
옥희에 어느 질문자께서 물어보셨길래 생각나서 포스팅해봄 ㅎㅎ
1. 지속적인 구독을 원하신다면 네이버 이웃추가 부탁드립니다
2. 도움이 되셨다면 공감한번 꾹! 눌러주세요
3. 궁금하신점이 있으시다면 댓글 GOGO
MySQL - DB 및 테이블 목록 조회 (2) | 2014.09.03 |
---|---|
MySQL - if ~ else 조건문 사용하기 : if (0) | 2014.08.24 |
MySQL - 널체크(IFNULL 사용하기) (0) | 2014.08.23 |
MySQL LIMIT를 사용하여 페이징쿼리를 동작시켜보자 (0) | 2014.08.15 |
MySQL SELECT 쿼리로 한꺼번에 다른 테이블에 INSERT 하기 (INSERT ... SELECT ... FROM ...) (0) | 2014.08.12 |
이번 포스팅은 MySQL의 DB목록과 테이블 목록을 조회하는 쿼리를 간단하게 포스팅 하고자 한다.
1) DB 조회
쿼리
SHOW DATABASES;
실행결과
2) 테이블조회
쿼리
SHOW TABLES;
실행결과
1. 지속적인 구독을 원하신다면 네이버 이웃추가 부탁드립니다
2. 도움이 되셨다면 공감한번 꾹! 눌러주세요
3. 궁금하신점이 있으시다면 댓글 GOGO
MySQL JDBC - 다중쿼리(multiple query) 한번에 처리하기옵션 (0) | 2014.09.03 |
---|---|
MySQL - if ~ else 조건문 사용하기 : if (0) | 2014.08.24 |
MySQL - 널체크(IFNULL 사용하기) (0) | 2014.08.23 |
MySQL LIMIT를 사용하여 페이징쿼리를 동작시켜보자 (0) | 2014.08.15 |
MySQL SELECT 쿼리로 한꺼번에 다른 테이블에 INSERT 하기 (INSERT ... SELECT ... FROM ...) (0) | 2014.08.12 |
이번포스팅은 테이블에 데이터 INSERT 후 시퀀스값 SELECT 해오는 것에 대하여 포스팅 하도록 하겠음
우선은 테스트 테이블을 생성 해보도록 하자
테이블명은 DBMS와 무관하게 동일하게 잡도록 해보겠음
테이블명 : seq_test
컬럼명 |
타입 |
idx |
bigint or number |
title |
varchar(20) |
MySQL 테이블 생성
CREATE TABLE seq_test(
idx bigint primary key auto_increment, title varchar(20) )
MS-SQL 테이블 생성
CREATE TABLE seq_test( idx bigint IDENTITY(1,1) primary key , title varchar(20) )
ORACLE 테이블 생성 (별도의 시퀀스 생성 필요)
CREATE TABLE seq_test( idx number primary key , title varchar(20) ); create sequence idx_test_seq start with 1 increment BY 1 maxvalue 10000;
테이블을 생성 하였다면 임의의 controller,dao,vo를 생성해보도록 하자
VO
public class Test { private int idx; private String title; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getIdx() { return idx; } public void setIdx(int idx) { this.idx = idx; } }
CONTROLLER
@Autowired private Dao dao; @RequestMapping(value="/insertSelectSeq") public void insertSelectSeq(Test test) { try { test.setTitle("insert test"); System.out.println("등록전 idx 값 :"+test.getIdx()); dao.insertSelectSeq(test); System.out.println("등록후 idx 값 :"+test.getIdx()); } catch (Exception e) { e.printStackTrace(); } }
DAO
@Autowired private SqlSession sql; public int insertSelectSeq(Test test) throws SQLException { return sql.insert("sql.insertSelectSeq",test); }
위의 소스에서 보다시피 dao에서는 int 형으로 return을 주지만
컨트롤러에서는 별도로 받는 vo객체가 존재하지 않는다.
그냥 dao에 parameter로 넘겨준 test객체에 담기는 것이다.
DBMS별로 INSERT 후 시퀀스값을 SELECT 해오는방법중 본인은 2가지 방식을 설명
하도록 하겠음
1. MySQL, MS-SQL 처럼 시퀀스가 자동 증가인 DBMS일 경우
사용가능
<insert id="insertSelectSeq" parameterType="com..model.Test" useGeneratedKeys="true" keyProperty="idx"> INSERT INTO seq_test (title) VALUES(#{title}) </insert>
위 코드처럼 정해주면 된다
※ keyProperty는 vo에 정의해준 변수명이다.
(시퀀스 컬럼값과 일치 시켜줘야함)
그럼 위의 코드로 테스트를 해보도록 하자
본인은 MySQL로 진행을 해보도록 하겠음
실행결과
위의 결과처럼 INSERT 호출전 VO객체의 들어있던 idx 의 값은 0이었으나 INSERT 처리를 한 후에는
자동증가값이 들어가있는 것을 확인 하였다.
2. 오라클처럼 시퀀스를 별도록 등록해주어야 하는 경우
※ 해당 방법은 꼭 오라클이 아니고 MySQL,MS-SQL
모두 사용이 가능 한 방법이다
<!--oracle--> <insert id="insertSelectSeq" parameterType="com.model.Test"> INSERT INTO seq_test(idx,title) VALUES(idx_test_seq.nextval,#{title}) <selectKey keyProperty="idx" resultType="Integer" order="AFTER"> SELECT idx_test_seq.currval FROM dual </selectKey> </insert> <!--mysql--> <insert id="insertSelectSeq" parameterType="com.model.Test"> INSERT INTO seq_test(title) VALUES(#{title}) <selectKey keyProperty="idx" resultType="Integer" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert> <!--mssql--> <insert id="insertSelectSeq" parameterType="com.model.Test"> INSERT INTO seq_test(title) VALUES(#{title}) <selectKey keyProperty="idx" resultType="Integer" order="AFTER"> SELECT IDENT_CURRENT('seq_test') </selectKey> </insert>
DBMS 종류별로 각각의 Mybatis의 쿼리XML은 위와 같다.
※ MS-SQL 버전에서의 IDENT_CURRENT('seq_test') 의
seq_test는 insert했던 테이블 명을 적어주면 된다
그럼 위의 코드로 테스트를 해보도록 하자
본인은 오라클로 진행을 해보도록 하겠음
실행결과
위와같이 결과가 나왔다.
DBMS 무관하게 결과는 모두 동일하게 나올것이다.
1. 지속적인 구독을 원하신다면 네이버 이웃추가 부탁드립니다
2. 도움이 되셨다면 공감한번 꾹! 눌러주세요
3. 궁금하신점이 있으시다면 댓글 GOGO
ibatis vs mybatis LIKE절 검색하기 (0) | 2014.08.04 |
---|---|
ibatis vs mybatis 조건문 + mybatis 공백조건 비교시 안될경우 및 두개이상 조건주기 (0) | 2014.08.01 |
ibatis(iterate) vs mybatis(foreach) 비교 샘플 (0) | 2014.07.31 |
요즘 모바일이 활성화되면서 사용되는 출력물 중 하나라고 생각되어서 포스팅 하게 되었다.
zxing 라이브러리를 이용하여 QR코드/큐알코드/바코드 이미지를 생성하고자 한다.
이번포스팅은 무척 심플하다
1. pom.xml dependency 추가를 해주도록 하자
<dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.1.0</version> </dependency>
2. QR코드 유틸제작
유틸이라고 하기엔 그렇고 그냥 만들어보았음
클래스명을 QRUtil라고 주고 생성메서드를 makeQR이라고 만들어봄
import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.client.j2se.MatrixToImageConfig; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; public class QRUtil { /** * QR코드 유틸 * @param url : QR에 작성할 URL이다 * @param width : QR 이미지 가로사이즈 * @param height : QR 이미지 세로사이즈 * @param file_path : 생성할파일의 디렉토리경로 * @param file_name : 생성할 파일의 파일명 */ public static void makeQR(String url,int width, int height, String file_path, String file_name){ try { File file = null; file = new File(file_path); if(!file.exists()) { file.mkdirs(); } QRCodeWriter writer = new QRCodeWriter(); url = new String(url.getBytes("UTF-8"), "ISO-8859-1"); BitMatrix matrix = writer.encode(url, BarcodeFormat.QR_CODE,width, height); //QR코드 색상 int qrColor = 0xFF2e4e96; MatrixToImageConfig config = new MatrixToImageConfig(qrColor,0xFFFFFFFF); BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(matrix,config); ImageIO.write(qrImage, "png", new File(file_path+file_name)); } catch (Exception e) { e.printStackTrace(); } } }
3. QR 생성테스트를 위한 임의의 컨트롤러 호출
꼭 컨트롤러가 아니여도 상관없다 핵심은 QRUtil에 들어있는 makeQR이 핵심임
@RequestMapping(value="/makeqr") public void makeqr() throws WriterException, IOException { String url = "http://roqkffhwk.tistory.com"; int width = 50; int height = 50; String file_path = "D:"+File.separator+"qr"+File.separator; String file_name = "myblog.png"; QRUtil.makeQR(url, width, height, file_path, file_name); }
실행결과 브라우저에는 오류페이지만 뜨겠고, 우리가 여기서 확인해야 할 부분은
지정한 디렉토리 + 파일로 정상적으로 QR코드가 생성되었는지가 핵심이다.
※ 참고로 본인은 int qrColor 변수의 값을 변경하면서 다양한 색상으로 생성을 해보았다.
색상코드값 |
결과화면 |
0xFF2d64e9 |
|
0xFF2e4e96 |
|
0xFF106f63 |
|
0xFF766c15 |
|
0xFF004555 |
|
0xFF557615 |
|
0xFF764515 |
|
0xFFad1004 |
|
0xFFbd4700 |
|
위와같이 다양한 색깔로 잘 나왔다. 잘 사용하시길 ^^
1. 지속적인 구독을 원하신다면 네이버 이웃추가 부탁드립니다
2. 도움이 되셨다면 공감한번 꾹! 눌러주세요
3. 궁금하신점이 있으시다면 댓글 GOGO
스프링3(spring3) 을 이용하면서 쿼츠/배치/스케쥴러 연동하기 -DB연동 (4) | 2014.09.28 |
---|---|
스프링3(spring3) 을 이용하여 간단 스케쥴러 세팅을 하도록 하자 (8) | 2014.09.20 |
class파일내에서 classpath에 존재하는 리소스 파일읽어오기 (0) | 2014.07.30 |
스프링3(Spring3) - 메이븐(maven) pom.xml에서 오라클 JDBC(ojdbc14.jar) 라이브러리 추가하기 (0) | 2014.07.30 |
스프링3(Spring3) - RedirectAttributes를 이용하여 리다이렉트 POST 방식으로 데이터 전송하기 (0) | 2014.07.30 |
이번 포스팅은 블로그에 자신의 블로그 순위를 확인하는 랭킹위젯을 소개 및 적용을 해보고자 한다.
위젯을 HTML소스로도 제공을 하며 위젯바로 적용가능한 블로그 종류는 티스토리,다음,네이버이다.
카페도 지원된다~
블로그 순위 조회사이트로 유명한 빅키워드의 블로그차트에서 랭킹위젯을 제공을 시작함
1. 블로그차트(Blogchart 회원가입하기)
위 주소로 들어가 회원 가입한다.
기본적인 정보수집만 하므로 가입방법도 무척이나 쉽다.
2. 로그인 후 다음 URL 접속
http://www.blogchart.co.kr/widget
로그인 후 위 사이트에 접속을 한후 API 인증키를 복사후 다음 다음위젯뱅크 페이지로 이동한다
3. 위젯설치할 블로그 선택
본인의 블로그는 티스토리여서 티스토리를 선택해도 되지만 위치및 코드를 직접 건들기 위해
HTML 소스를 클릭함
4. 이전페이지에서 발급받은 API키 붙여넣기 후 퍼가기 버튼 클릭
5. 태그 복사
태그 복사후 티스토리 사이드에 적용하도록 하자
본인의 경우 사이드바에 위젯을 설치하고자 한다.
티스토리로 퍼가기를 했으면 저절로 위젯을 받아서 적용이 가능한대, 스킨문제상 정렬이 예쁘지 않아서 별도로 사이드바를 생성하기로 함
※ 참고로 스킨은 catntuna을 사용하는 중임
1. 관리자 페이지의 사이드바 클릭후 -> HTML 배너출력우측의 +버튼 클릭
2. 사이드바1이란곳에 HTML 배너출력이 추가가 된다
3. 추가된 HTML 배너출력의 편집버튼 클릭후 다음 코드를 HTML 소스에 넣어준다음 저장클릭!
<div class="sidebar_module_outer"><div class="sidebar_module_inner"> <div class="sidebar_title">블로그 순위</div> <div class="td_info" id="block4" style="display:block;text-align:center;"> </div> </div></div>
위젯 실행화면
위 화면처럼 사이드바에 위젯치 추가되었으면 설치 성공!!
ㅠㅠ 아직 본인의 순위는 17만등... 분발하도록 해야겠다 ㅎㅎ
도움이 되셨다면 공감부탁요~
네이버에 티스토리의 글이 누락되어서 검색이 되지 않을경우의 대처법 (6) | 2014.09.17 |
---|---|
네이버에서 티스토리외에 타블로그 구독(이웃추가) 방법입니다. (0) | 2014.08.20 |