>mysql -u root -p mysql

root 계정으로 mysql 접속

>use mysql;

mysql 테이블 사용

>create database tableName;

테이블 생성


방법1 - 사용자를 추가하여 권한부여 (추천)

>grant all privileges on testId.* to test@hostAddress identified by 'testPwd' with grant option;


방법2 - mysql 사용자 DB에 직접 추가

>use mysql;

>INSERT INTO user VALUES('%', 'testId', PASSWORD('testPwd'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');




'DB > Mysql' 카테고리의 다른 글

수정시마다 date time 수정  (0) 2015.11.28
Mysql Error 2003, 10061문제  (1) 2012.05.17
Work bench 작성된 DB를 EER Diagram으로 변환  (0) 2012.03.28

로컬에 DB환경을 테스트 하려고 하니 Error2003, 10061문제가 발생하면서 Mysql이 실행되지 않았다.


검색해본 결과 root 비밀번호 문제라고 한다. (제대로 입력한거 같은데 사람의 기억력이란 참 모를일이다.)

하여튼 Mysql 설치경로 \bin으로 들어가서

>mysqld --skip-grant

입력하면 콘솔이 멈추게 된다. 왜 멈추는지는 알 수 없으나 창을 닫고

다시 재접속을 하면 원활하게 사용할수 있다. 

*root패스워드가 사라지게 되니 실제 서비스에서는 root패스워드를 초기화 하는 방향으로 해결하자.

이후 
>flush privileges; 
로 버퍼를 비워주고

>use mysql;
mysql 로 database를 바꿔주고

>update  user  set  password=password('1234') where user='root';
로 root 패스워드를 초기화 한다.

안될때는 콘솔을 껏다 켜는 방향으로 하자. 





'DB > Mysql' 카테고리의 다른 글

수정시마다 date time 수정  (0) 2015.11.28
Mysql 테이블 생성, 사용자 추가  (0) 2012.05.22
Work bench 작성된 DB를 EER Diagram으로 변환  (0) 2012.03.28

com.manager.dao.ManagerDAOImpl.java


@Repository
public class ManagerDAOImpl implements ManagerDAO{
		private Logger logger = Logger.getLogger(getClass());
		@Resource(name = "sqlMapClientTemplate")
		private SqlMapClientTemplate sqlMapClientTemplate;

		@SuppressWarnings("unchecked")
		public List<VcardInformation> select(){
		List<VcardInformation> vlist = null;
		try{
			vlist = (List<VcardInformation>)sqlMapClientTemplate.queryForList("vcard.select");
			if(vlist == null){
				return new ArrayList<VcardInformation>();
			}
		}catch(Exception e){
			e.printStackTrace();
			logger.fatal(e.getMessage());
		}
		
		return vlist;
	}
}

- DB조회 select() 함수. VcardInformation 객체로 여러 컬럼의 객체를 List화하여 받아온다.

- 칼럼별 데이터를 resultMap에 맵핑된 데이터 변수에 맞게 맵핑되어 객체화 된다.

- 위의 경우 조회된 DB데이터들을 VcardInformation 리스트화하여 처리가능한 정보로 가공한다.



'DB > iBatis' 카테고리의 다른 글

iBatis 구현 - 6 Xml맵핑- .vo.xxx.java  (0) 2012.03.29
iBatis 구현 - 5 xxxDAO.xml  (0) 2012.03.29
iBatis 구현 - 4 sqlMapConfig.xml  (0) 2012.03.29
iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28

이것은 iBatis라기 보다는 jaxb 마샬링구현이기는 하나 일단 iBatis변수 맵핑에 중요한 주제이므로 

iBatis로 일단 설명하겠다.

om.manager.vo.vcard.VcardInformation.java

package com.manager.vo.vcard;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="VcardInformation",
		propOrder ={"name","addr","cell","tel","fax","email"})
public class VcardInformation {
	@XmlElement(name="name")
	private String name;
	@XmlElement(name="addr")
	private String addr;
	@XmlElement(name="cell")
	private String cell;
	@XmlElement(name="tel")
	private String tel;
	@XmlElement(name="fax")
	private String fax;
	@XmlElement(name="email")
	private String email;
	
	public VcardInformation(){		
	}
	public VcardInformation(VcardInformation vc){
		this.name = vc.name;
		this.addr = vc.addr;
		this.cell = vc.cell;
		this.tel = vc.tel;
		this.fax = vc.fax;
		this.email = vc.email;		
	}
	public String getName(){
		return this.name;
	}
	public String getAddr(){
		return this.addr;
	}
	public String getCell(){
		return this.cell;
	}
	public String getTel(){
		return this.tel;
	}
	public String getFax(){
		return this.fax;
	}
	public String getEmail(){
		return this.email;
	}
	public void setName(String name){
		this.name = name;
	}
	public void setAddr(String addr){
		this.addr = addr;
	}
	public void setCell(String cell){
		this.cell = cell;
	}
	public void setTel(String tel){
		this.tel= tel;
	}
	public void setFax(String fax){
		this.fax = fax;
	}
	public void setEmail(String email){
		this.email = email;
	}
}


중요한점은 @ 어노테이션 들이다.

@XmlType으로 객체안에 쓰일 변수의 수만큼 propOrder를 순서에 맞게 배열한다.

@XmlElement로 DB수납시 쓰일 변수의 이름을 설정한다. 즉 이 이름이 앞서 나온 #strVar#이 되는것이다.

위의 경우 #name#을 쓰게 되면 String name이 선택되게 된다. 어노테이션을 맞게 써준다면  변수의 이름은 관련없다.

get/set 함수를 알맞게 써줌으로 인해 xxxDAO.xml에서 가져오는 데이터를 원하는곳에 뿌려주고, 전달할수 있게 된다.

ex) setName("정영민") -> .insert호출 #name# 에는 정영민이 담김. 

.select ->VcardInformation객체 받아옴. var= getName()  var에 정영민이 담겨오게됨

(많은부분 생략)






'DB > iBatis' 카테고리의 다른 글

iBatis구현 7 - xxxDAO.java  (0) 2012.03.29
iBatis 구현 - 5 xxxDAO.xml  (0) 2012.03.29
iBatis 구현 - 4 sqlMapConfig.xml  (0) 2012.03.29
iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28

com.manager.dao.sql.VcardDAO.xml




	
	
		
		
		
		
		
		
	
	
	
		insert into VcardTable(name, addr, cell, tel, fax, email)
			values(#name#, #addr#, #cell#, #tel#, #fax#, #email#)
	
	
		update VcardTable
			set addr=#addr#,cell=#cell#,tel=#tel#,fax=#fax#,email=#email#
			where name=#name#
	
	



예제로 설명하겠다.

<sqlMap namespace="vcard">

sqlMap으로 선언되며 

<typeAlias alias="VcardInformation" type="com.manager.vo.vcard.VcardInformation"/>

뒤에있을 resultMap에 사용할 class를 정의한다. 해당클래스에는 Xml파싱을 위한 어노테이션들이 기록되어있다. (다음장에서 설명)

<resultMap id="resultMapVcardInformation" class="VcardInformation">

VcardInformation 클래스의 인자를 sql쿼리에 쓰일 데이터와 맵핑해준다. resultMap은 select문 등 칼럼 맵핑이 필요할때 사용된다.

ex) <result property="varName" column="DB_NAME"/>

varName이라는 변수를 DB_NAME 칼럼에 맵핑

<select id="select" resultMap="resultMapVcardInformation" parameterClass="VcardInformation">

select

name, addr, cell, tel, fax, email

from

VcardTable

</select>

".select"로 호출된다. 

select시  parameterClass는 위에 선언한 resultMap의 class의 선언 어노테이션에 맞는 값을 찾아서 넣는다.

Column  | -> |StringVal

NAME칼럼의 DBVAL1 -> property에 해당하는 class의 어노테이션을찾아맵핑 -> name(변수)로 들어오게 된다.

말이 어려운데 맵핑 맵핑을 잘생각해보면 이해할 수 있다.

구현해보면 더 쉽게 이해할 수 있고..


<insert id="insert" parameterClass="VcardInformation">

insert into VcardTable(name, addr, cell, tel, fax, email)

values(#name#, #addr#, #cell#, #tel#, #fax#, #email#)

</insert>

마찬가지로 ".insert"로 선언된다.

parameterClass에 VcardInformation 객체로 되어있는데 필요한경우 HashMap, String 등 간단하게 사용도 가능하다.

VcardInformation 객체의 내부선언된 어노테이션의 변수에 ##으로 변수를 삽입, sql문에 사용 할 수 있다.


<select id="count" resultClass="Integer">

select count(uid) as total from VcardTable where name=#name#

</select>

위의 예제와 비슷하나 이것은 리턴값이 integer이다. resultClass를 보면 쉽게 구분 가능한데, 갯수를 구하여 리턴해야 하기때문에 굳이  객체선언 등 필요가 없다. 

이번 포스트는 좀.. 많이 난해하다. 남한테 설명하기란 어렵구나


'DB > iBatis' 카테고리의 다른 글

iBatis구현 7 - xxxDAO.java  (0) 2012.03.29
iBatis 구현 - 6 Xml맵핑- .vo.xxx.java  (0) 2012.03.29
iBatis 구현 - 4 sqlMapConfig.xml  (0) 2012.03.29
iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28
xxx-servlet.xml에서 설정한 위치에 해당하는  sqlMap을 설정해야한다.
간단한 설정 예이다.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
  "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<settings
		cacheModelsEnabled="true"
		enhancementEnabled="true"
        lazyLoadingEnabled="true"
        maxRequests="32"
        maxSessions="10"
        maxTransactions="5"
        useStatementNamespaces="true"/>
	<sqlMap resource="com/manager/dao/sql/VcardDAO.xml"/>
	
	
</sqlMapConfig>


간단한 설정, 그리고 사용할 sql문의 위치로 구성된다.

위의 경우 VcardDAO.xml에는 프로젝트에서 사용할 sql문이 담겨져있다.

.이 아니라 /로 패키지를 구분한다.



'DB > iBatis' 카테고리의 다른 글

iBatis 구현 - 6 Xml맵핑- .vo.xxx.java  (0) 2012.03.29
iBatis 구현 - 5 xxxDAO.xml  (0) 2012.03.29
iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28
iBatis 구현 - 2 web.xml 수정  (0) 2012.03.28

HashMap은 간단하게 말해 key와 value의 집합이다. 즉 key로 value를 찾아갈수 있게한다.

iBatis에서 적용예로 알아보자.

public void delete(String email, Calendar time) throws Exception {
			Map<String, Object> parameters = new HashMap<String, Objec>();
			parameters.put("calendarTime", time);
			parameters.put("emailAddress", email);
			sqlMapClientTemplate.update(".delete", parameters);
}

위의 경우 인자로 들어온 2개의 파라메터값을 put 한다. 

즉    String  // "calendarTime"  

 Object // time

이 되는것이다. 

이렇게 되면 HashMap에는

String            | Object

calendarTime | time

emailAddress | email

이런 형태로 key | value 쌍의 데이터가 들어간다.


이를 따라서 sqlMap의 .delete 까지 따라들어가면

<sqlMap>
 ~설정~
			<update id="delete" parameterClass="HashMap">
			update
						account
			set
						delete_mark=1,
						modified_time=#calendarTime#
			where
						email_address=#emailAddress#
			</update>
</sqlMap>


왜 쿼리가 delete가 아닌 update인것은 account를 실제 삭제하는것이 아니라 삭제된 것으로 표기하기 때문이다. (정하기나름)

중요한것은 parameterClass가 HashMap으로 들어왔기 때문에 해당 key를 #key#형태로 써줌으로서 내부에 값을 가져올수 있다는 것이다.

여기서는 calendarTime과 emailAddress Key로 소스의 데이터 time과 email 값을 쿼리문에 사용할수 있게되었다.



'DB > iBatis' 카테고리의 다른 글

iBatis 구현 - 5 xxxDAO.xml  (0) 2012.03.29
iBatis 구현 - 4 sqlMapConfig.xml  (0) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28
iBatis 구현 - 2 web.xml 수정  (0) 2012.03.28
iBatis 구현 - 1 대략적 개념  (0) 2012.03.28

[샘플코드 : manager-servlet.xml]

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

<beans xmlns="http://www.springframework.org/schema/beans" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:p="http://www.springframework.org/schema/p" 

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:oxm="http://www.springframework.org/schema/oxm"    

    xsi:schemaLocation="

        http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

        http://www.springframework.org/schema/tx    

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

        http://www.springframework.org/schema/aop 

    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

        http://www.springframework.org/schema/context 

        http://www.springframework.org/schema/context/spring-context-3.0.xsd

        http://www.springframework.org/schema/oxm

     http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">

<context:component-scan base-package="com.manager" />


<tx:annotation-driven transaction-manager="transactionManager"/>

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

    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

    <property name="url" value="jdbc:mysql://61.109.146.35:3306/test"/>     

    <property name="username" value="testid"/>

    <property name="password" value="testpwd"/>

    <property name="defaultAutoCommit" value="true"/>

    <property name="initialSize" value="5"/>

    <property name="maxActive" value="30"/>

    <property name="maxIdle" value="5"/>

    <property name="maxWait" value="30000"/>

    <property name="timeBetweenEvictionRunsMillis" value="60000"/>

</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

    </bean>


    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

        <property name="configLocation" value="classpath:config/sqlMapConfig.xml"/>

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

    </bean>

    

    <bean id="sqlMapClientTemplate"

class="org.springframework.orm.ibatis.SqlMapClientTemplate"

p:sqlMapClient-ref="sqlMapClient"/>

<bean

class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" p:alwaysUseFullPath="true" >

<property name="messageConverters">

<list>

<ref bean="stringHttpMessageConverter" />

<ref bean="marshallingHttpMessageConverter" />

</list>

</property>

</bean>

<bean id="stringHttpMessageConverter"

class="org.springframework.http.converter.StringHttpMessageConverter">

<property name="writeAcceptCharset" value="true" />

</bean>

<bean id="marshallingHttpMessageConverter"

class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"

p:marshaller-ref="jaxb2Marshaller" p:unmarshaller-ref="jaxb2Marshaller" />

<oxm:jaxb2-marshaller id="jaxb2Marshaller" contextPath="com.manager.vo.vcard"/>

<bean id="viewResolver"

class="org.springframework.web.servlet.view.UrlBasedViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

<property name="prefix" value="/WEB-INF/view/"></property>

<property name="suffix" value=".jsp"></property>

</bean>


</beans>

manager-servlet.xml

-- servlet의 모든것이 중요하지만 체크해야 할점을 빨간색 마킹처리했다.

dataSource에는 dbproperties 파일로 빼놓는 경우도 있으나 DB접속 정보를 저장한다.

transactionManager를 선언 하고 DB를 설정한다.

sqlMapClient bean을 선언하고 sqlMapConfig.xml위치를 설정한다. 위의경우 소스폴더의 config패키지 아래에 생성된다.


'DB > iBatis' 카테고리의 다른 글

iBatis 구현 - 4 sqlMapConfig.xml  (0) 2012.03.29
iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 2 web.xml 수정  (0) 2012.03.28
iBatis 구현 - 1 대략적 개념  (0) 2012.03.28
iBatis 구현 (개인적)  (0) 2012.03.28


<servlet> 부분이 중요. 입력들어오는 주소를 허용하는 범위이다. * 이 아니라 정확한 주소를 치면 그 외의 입력은 모두 무시한다. 

현재는 목록불러들어오기(get), 목록 넣기(insert) 두개의 기능을 쓰기 때문에 *로 지정



'DB > iBatis' 카테고리의 다른 글

iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28
iBatis 구현 - 1 대략적 개념  (0) 2012.03.28
iBatis 구현 (개인적)  (0) 2012.03.28
iBatis란?  (0) 2012.03.28

Sql Editor화면에서 

1) Database -> Reverse Engineer (Ctrl + R) 

2) 호스트 주소 입력, 계정 입력 접속

3) 테이블 선택

4) 변환

완료시

우클릭으로 다양한 메뉴선택 가능하다. 

테이블변경, sql문생성 등

활용방안. DB테이블 배포에 용이 (로컬설치 등)

'DB > Mysql' 카테고리의 다른 글

수정시마다 date time 수정  (0) 2015.11.28
Mysql 테이블 생성, 사용자 추가  (0) 2012.05.22
Mysql Error 2003, 10061문제  (1) 2012.05.17

+ Recent posts