이번 포스팅의 목표는 db연결 및 log4sql을 통한 sql query 출력입니다. 

접속 DB는 mysql을 기준으로 합니다.(Oracle도 크게 다르지 않습니다.)


앞서서 기본 화면 까지 호출되었다는 가정하에 진행합니다. 


1. pom.xml 에 db관련 라이브러리 추가.

   <!-- DB -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.36</version>

</dependency>

<dependency>

<groupId>commons-dbcp</groupId>

<artifactId>commons-dbcp</artifactId>

<version>1.4</version>

</dependency>


<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.0.6</version>

</dependency>

<dependency>

 <groupId>org.mybatis</groupId>

 <artifactId>mybatis-spring</artifactId>

 <version>1.0.2</version>

</dependency>


2. 프로젝트 우클릭 Run As -> Maven Install


3. src/main/resources 폴더에 conf 폴더 생성 후 db.properties 파일을 생성 후 아래와 같이 작성

(빨간색 부분은 본인 설정에 맞게 설정하시면 됩니다)

db.driverClassName=com.mysql.jdbc.Driver

db.url=jdbc:mysql://127.0.0.1:3306/스키마

db.username=아이디

db.password=패스워드


3. mysql 접속 후 테이블 생성 후 샘플데이터 insert

create table member(

id_no INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

login_id VARCHAR(20) NOT NULL,

login_pw CHAR(64)  NOT NULL

);


insert into member (login_id, login_pw) 

values ('admin', password('admin1234'));


4. src/main/resources 폴더에 sql 폴더 생성 후 member.xml 파일을 생성 후 아래와 같이 작성

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 

  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="member">

<select id="getMember" resultType="hashMap">

    select * from MEMBER

  </select>

</mapper>  


5. src/main/webapp/WEB-INF/spring/root-context.xml 파일에 db관련 설정사항 추가

<!-- Root Context: defines shared resources visible to all other web components -->

<!-- db setting -->

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="locations">

<list>

<value>classpath:conf/db.properties</value>

</list>

</property>

</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

   <property name="driverClassName" value="${db.driverClassName}"/>

   <property name="url" value="${db.url}"/>

   <property name="username" value="${db.username}"/>

   <property name="password" value="${db.password}"/>

  </bean>

 

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

 <property name="dataSource" ref="dataSource" />

 <property name="mapperLocations" value="classpath:sql/*.xml" />

</bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">

 <constructor-arg index="0" ref="sqlSessionFactory" />

</bean>


6. HomeController.java 파일에 해당 컨트롤러 쿼리 조회문 추가 후 데이터를 제데로 불러오는지 확인.

1개의 데이터를 insert했으니, 총 결과건수 1나오면 정상

package com.dparts.com;


import java.util.List;

import java.util.Locale;


import org.apache.ibatis.session.SqlSession;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;


/**

 * Handles requests for the application home page.

 */

@Controller

public class HomeController {

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

@Autowired

private SqlSession sqlSession; 

/**

* Simply selects the home view to render by returning its name.

*/

@RequestMapping(value = "/", method = RequestMethod.GET)

public String home(Locale locale, Model model) {

List list = sqlSession.selectList("getMember");

logger.info("ListCount = {}.", list.size());

return "home";

}

}


--> 결과..

INFO : com.dparts.com.HomeController - ListCount= 1.


7.정상적으로 db접속 후 조회 해오는걸 확인했으니, log4sql을 사용해 쿼리 로그를 확인한다. 

-> log4sql란 jdbc를 이용하여 DB에 동작하는 쿼리로그를 찍어주는 라이브러리. 

    http://log4sql.sourceforge.net/ 사이트에서 다운받을수 있다. 

   사용법이 매우 간단하나 가급적이면 개발서버에서만 적용하고 실제 운영서버에서는 사용하지 않는것을 권장.


src/main/webapp/WEB-INF/lib 폴더를 생성 후 다운받은 log4sql.jar 파일을 추가한다. 

3번에서 작성했던 db.properties에서 아래와 같이 변경 후 WAS를 재기동

db.driverClassName=com.mysql.jdbc.Driver 

를 아래와 같이 변경

db.driverClassName=core.log.jdbc.driver.MysqlDriver


6번 동작을 다시한번 해보면 console창에 쿼리가 나오는것을 확인할 수 있다. 

결과 >>

[2015-08-02 15:36:40] [DEBUG]『org.apache.ibatis.executor.statement.RoutingStatementHandler:query(55)』 Elapsed Time [0:00:00.000]


    select

        * 

    from

        MEMBER



[2015-08-02 15:36:40] [DEBUG]『org.apache.ibatis.executor.statement.PreparedStatementHandler:query(40)』 Elapsed Time [0:00:00.000]


    select

        * 

    from

        MEMBER

Query Result[]: -1row


INFO : com.dparts.com.HomeController - ListCount = 1.



그런데 select쿼리에 경우 두번씩 나온다.. 이건 나중에 해결하도록 하고.. 

여기까지 했으면 기본적인 DB접속 및 쿼리 조회까지 완료






STS를 이용한 기본환경 구축! (목표: 10분안에 하기)


1. 제일먼저 STS를 설치한다. 


2. STS실행


3. 새로운 프로젝트 생성

- File -> New -> Spring Project


4. Spring MVC Project 선택 후 다음


5. maven을 사용하기 떄문에 패키지명을 설정해줘야한다. 

    xxx.xxx.xxx <-요런식으로 설정해줘야함.


6. 생성된 프로젝트를 WAS로 구동한다.

- 프로젝트 우클릭 -> Run As -> Run on Server


7. WAS선택 

- 기본 설치되어있는 Pivotal을 설정해서 해줬는데, Tomcat을 설치해서 사용해도 된다. 


8. 프로젝트를 Server에 등록


9. 구동후 웹페이지 확인

- 한글이 깨진다


10. JSP페이지 가서  pageEncoding를 UTF-8로 선언해준 후 다시 확인 


11. 한글이 제대로 나오는지 확인


이렇게 해서 STS를 이용한 기본 웹개발 환경을 만들어보았다. 

이렇게 따라했다면 10분도 안되서 기본환경을 구축했으리라 생각한다. 

다음편에서는 DB설정과 로그인 기능 구현을 해보도록 하겠다.


* 목표 

- STS를 이용하여 SPRING을 이용한 간단한 쇼핑몰 만들기


* 환경

- JAVA 1.6

- Spring 3.1

- Tomcat6, (개발시에는 Pivotal)

- MySql

- STS  3.6.3

- Maven

- Git

- 어느정도 개발경험이 있다고 생각하고 진행 할 예정입니다. 모르는게 있으면 댓글 달아주세요. 

- 소스는 Git으로 공개할 예정입니다. ^^ 많은 지적 및 조언 부탁드립니다. 




아래 샘플코드 참조

핵심은 디렉티브에서 scope.$parent.함수 를 만들어서 사용하는것!


how  to call child directive function?


See the Pen NPJqOB by homin ahn (@beans9) on CodePen.


npm ERR! peerinvalid The package generator-karma does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer generator-angular@0.2.2 wants generator-karma@~0.2.0

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"
 "install" "-g" "generator-angular"
npm ERR! cwd C:\Code\Resgrid\temp
npm ERR! node -v v0.8.22
npm ERR! npm -v 1.2.14
npm ERR! code EPEERINVALID
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Code\Resgrid\temp\npm-debug.log
npm ERR! not ok code 0

위와같이 에러가 날 경우 아래 명령어를 한번 실행시켜준 후 설치하면 이상없이 작동한다. 
>npm uninstall -g generator-karma && npm install -g generator-angular


오랜만에 Sourcetree를 실행시켰는데 실행이 안된다

재설치를 해봐도 마찬가지, 구글링 결과 아래 폴더를 삭제 후 다시 실행..

이상없이 동작한다. 대신 초기설정은 한번 해줘야 한다는거..


\Users\Administrator\AppData\Local\Atlassian\SourceTree.exe_Url_xxxxxxxx



'Git > TIP' 카테고리의 다른 글

Sourcetree 시작이 안될때  (0) 2015.03.07

다운로드 사이트 http://developer.android.com/index.html



다운로드 받은 후 설치 -> next.. next.. next.. next.. 기본설정으로 일단 설치.. 후 실행하니 바로 에러.. 64비트로 jdk설치


JDK 다운로드 사이트 : http://java.oracle.com



설치 후 환경변수에 JAVA_HOME 등록



다시 실행하면 정상동작..



다음 포스팅에서는 하이브리드앱을 만들기 위한 준비를 해보도록 한다. 




'Android' 카테고리의 다른 글

[android] android studio 설치  (0) 2015.02.27
아래와 같이 array를 filter할 경우 그 length를 가져오는 예제이다
filter한 내용을 새로 변수를 선언해서 넣어주는게 포인트이다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div ng-app="myApp">
  <div ng-controller="MyCtrl">
      Filter: <input ng-model='filterExpr'>
      <button ng-click='items.push("car")'>Add sth to the list</button>
      <button ng-click='items.splice(items.length-1,1)'>minus sth from the list</button>
      <hr>
      <ul>
          <li ng-repeat='item in filtered = (items | filter:filterExpr) track by $index'>{{item}}</li>
      </ul>
      <hr>   
      Filtered list has {{filtered.length}} items
  </div>
</div>
 
<script type="text/javascript">
<!--
angular.module('myApp', [])
  .controller('MyCtrl'function ($scope) {
     $scope.items = ['foo''bar''foobar'];
});
//-->
</script>
cs


데모

See the Pen angularjs filter length by homin ahn (@beans9) on CodePen.



// 필터된 데이터 길이 구하기


이클립스를 사용하다보면 open resource(단축키:ctrl + alt + r)이나 파일찾기를 많이 사용하는데

target 폴더에 내용이 같이 나와 가끔 실수를 하곤한다. 검색결과에서 제외시키는 방법


제외하고자 하는 폴더 우클릭 -> properties 


Resource에 Attribute항목에  Derived 체크



이렇게 해주면 검색결과나 open resource에서 검색되지 않는다. 




eclipse,target,open resource,ignore,파일찾기,제

'ECLIPSE > TIP' 카테고리의 다른 글

[eclipse/tip] 파일찾기 중 특정폴더 제외하기  (0) 2015.02.24

STS에서 SPRING MVC PROJECT IMPORT 후 서버 실행하면


java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext


와 같은 에러메세지 출력. 


    root-context.xml 위치 수정 



+ Recent posts