ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 210706_1(iBatis)
    Spring 2021. 7. 6. 17:37

    예제2

    1) blog_user 테이블 생성

    2) ibatis config

    3) ibatis mapper

    4) ibatis client helper

    5) 실행 프로그램 작성 실행

     

     

    테이블생성

    create table blog_user(
    user_id varchar2(10) primary key,
    user_name varchar2(20),
    role varchar2(5),
    password varchar2(10)
    );
    
    drop table blog_user;

    DTO 생성

    package ex2.blog;
    
    import java.io.Serializable;
    
    public class BlogUser implements Serializable{
    	
    	private String userID;
    	private String userName;
    	private String role;
    	private String password;
    	
    	public String getUserID() {
    		return userID;
    	}
    	public void setUserID(String userId) {
    		this.userID = userId;
    	}
    	public String getUserName() {
    		return userName;
    	}
    	public void setUserName(String userName) {
    		this.userName = userName;
    	}
    	public String getRole() {
    		return role;
    	}
    	public void setRole(String role) {
    		this.role = role;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	
    	
    
    }

    database.properties -- 드라이버연동 

    #####################
    #ORACLE
    #####################
    driver=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@127.0.0.1:1521:XE
    username=jspuser
    password=1234

    sqlMapClientManager.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config2.0//EN" 
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
    
    <sqlMapConfig>
    	<properties resource="ex2/blog/database.properties" />
    
    	<settings cacheModelsEnabled="false"
    		useStatementNamespaces="true" />
    		
    	<transactionManager type="JDBC" commitRequired="false">
    		<dataSource type="SIMPLE">
    			<property name="JDBC.Driver" value="${driver}" />
    			<property name="JDBC.ConnectionURL" value="${url}" />
    			<property name="JDBC.Username" value="${username}" />
    			<property name="JDBC.Password" value="${password}" />
    
    		</dataSource>
    	</transactionManager>
    	<sqlMap resource="ex2/blog/BlogUser.xml" />
    
    </sqlMapConfig>

    BlogUser.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap PUBLIC "//ibatis.apache.org//DTD SQL Map 2.0//EN"
     "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    
    <sqlMap namespace="BlogUser">
    	<typeAlias alias="user" type="ex2.blog.BlogUser" />
    	<!-- bean의 속성과 테이블의 컬럼을 매핑한다. -->
    	<resultMap class="user" id="getBlogUserAll">
    		<result property="userID" column="USER_ID" />
    		<result property="userName" column="USER_NAME" />
    		<result property="role" column="ROLE" />
    		<result property="password" column="PASSWORD" />
    
    	</resultMap>
    	<!-- 여기서부터 입력 선택 수정 삭제 sql 작성합니다 -->
    
    
    
    
    </sqlMap>

    헬퍼클래스작성

    SqlMapClientManager.java

    package ex2.blog;
    
    import java.io.Reader;
    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;
    
    public class SqlMapClientManager {
    
    	private static SqlMapClient sqlMap;
    
    	static {
    		try {
    			String resource = "ex2/blog/SqlMapClientManager.xml";
    			Reader reader = Resources.getResourceAsReader(resource);
    			sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
    		} catch (Exception e) {
    			e.printStackTrace();
    			throw new RuntimeException(e);
    			// TODO: handle exception
    		}
    	}
    
    	private SqlMapClientManager() {
    	}
    
    	public static SqlMapClient getSqlMapClient() {
    		return sqlMap;
    	}
    }

    BlogUser.xml --Insert 추가

    	<insert id="regUser" parameterClass="user">
    		INSERT INTO BLOG_USER (USER_ID, USER_NAME, ROLE, PASSWORD)
    		VALUES (#userID#, #userName#, #role#, #password#)
    	</insert>

    IBatisTestInsert.java

    package ex2.blog;
    
    import com.ibatis.sqlmap.client.SqlMapClient;
    
    public class IBatisTestInsert {
    	
    	private static SqlMapClient sqlMap = SqlMapClientManager.getSqlMapClient();
    	
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		try {
    			
    			//새로운 사용자 입력
    			BlogUser paramBlogUser = new BlogUser();
    		//	BlogUser returnBlogUser = new BlogUser();
    			
    			paramBlogUser.setUserID("4");
    			paramBlogUser.setUserName("김길재");
    			paramBlogUser.setRole("user");
    			paramBlogUser.setPassword("kkjae");
    			// 네임스페이스.아이디 , 파라미터
    			sqlMap.insert("BlogUser.regUser", paramBlogUser);
    			
    			System.out.println("----------------------------");
    			System.out.println("데이터 입력완료.");
    			System.out.println("----------------------------");
    
    
    		} catch (Exception e) {
    			// TODO: handle exception
    		} //catch
    
    	}
    
    }

    목록가져오기

    BlogUser.xml 추가

    	<select id="getBlogUserAll" resultMap="getBlogUserAll">
    		SELECT USER_ID,
    		USER_NAME,
    		ROLE,
    		PASSWORD
    		FROM BLOG_USER
    	</select>

    IBatisTestList.java

     

    package ex2.blog;
    
    import java.util.Iterator;
    import java.util.List;
    
    import com.ibatis.sqlmap.client.SqlMapClient;
    
    public class IBatisTestList {
    	
    	private static SqlMapClient sqlMap = SqlMapClientManager.getSqlMapClient();
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		try {
    			System.out.println("-----------------------");
    			System.out.println("initial");
    			System.out.println("-----------------------");
    			
    			BlogUser paramBlogUser = new BlogUser();
    			BlogUser returnBlogUser = new BlogUser();
    			
    			List list = sqlMap.queryForList("BlogUser.getBlogUserAll", paramBlogUser);
    			Iterator it = list.iterator();
    			
    			while(it.hasNext()) {
    				returnBlogUser = (BlogUser)it.next();
    				
    				System.out.println("UserID =" + returnBlogUser.getUserID());
    				System.out.println("UserName =" + returnBlogUser.getUserName());
    				System.out.println("Role =" + returnBlogUser.getRole());
    				
    				System.out.println("======================\n");
    
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		}//catch
    
    	}
    
    }

     

     

    목록 수정하기 + 출력하기

    BlogUser.xml 추가

    	<update id="updUser" parameterClass="user">
    		UPDATE BLOG_USER SET
    		USER_NAME = #userName#,
    		ROLE = #role#,
    		PASSWORD = #password#
    		WHERE
    		USER_ID = #userID#
    	</update>

    IBatisTestEdit.java

    package ex2.blog;
    import java.util.Iterator;
    import java.util.List;
    
    import com.ibatis.sqlmap.client.SqlMapClient;
    
    public class IBatisTestEdit {
    	
    	private static SqlMapClient sqlMap = SqlMapClientManager.getSqlMapClient();
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		try {
    			BlogUser paramBlogUser = new BlogUser();
    			BlogUser returnBlogUser = new BlogUser();
    			//사용자 수정
    			paramBlogUser.setUserID("1");
    			paramBlogUser.setUserName("김정수");
    			paramBlogUser.setRole("user");
    			paramBlogUser.setPassword("kkjae");
    			
    			sqlMap.update("BlogUser.updUser", paramBlogUser);
    			
    			System.out.println("--------------------------");
    			System.out.println("데이터가 수정 되었습니다.");
    			System.out.println("--------------------------");
    			
    			List list = sqlMap.queryForList("BlogUser.getBlogUserAll", paramBlogUser);
    			Iterator it = list.iterator();
    			
    			while(it.hasNext()) {
    				returnBlogUser = (BlogUser)it.next();
    				
    				System.out.println("UserID =" + returnBlogUser.getUserID());
    				System.out.println("UserName =" + returnBlogUser.getUserName());
    				System.out.println("Role =" + returnBlogUser.getRole());
    				
    				System.out.println("======================\n");
    			}
    
    		}catch(Exception e) {
    			e.printStackTrace();
    		}//catch
    
    	}
    
    }


    삭제하고 출력하기

    BlogUser.xml

     

    	<!-- 삭제하기 -->
    	<delete id="delUser" parameterClass="user">
    	DELETE FROM BLOG_USER WHERE USER_ID=#userID#
    	</delete>

    IBatisTestDelete.java

    package ex2.blog;
    
    import java.util.Iterator;
    import java.util.List;
    
    import com.ibatis.sqlmap.client.SqlMapClient;
    
    public class IBatisTestDelete {
    	
    	private static SqlMapClient sqlMap = SqlMapClientManager.getSqlMapClient();
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		try {
    			BlogUser paramBlogUser = new BlogUser();
    			BlogUser returnBlogUser = new BlogUser();
    			
    			//사용자 삭제
    			paramBlogUser.setUserID("1");
    			sqlMap.update("BlogUser.delUser", paramBlogUser);
    			
    			System.out.println("--------------------------");
    			System.out.println("삭제되었습니다.");
    			System.out.println("--------------------------");
    
    			List list = sqlMap.queryForList("BlogUser.getBlogUserAll", paramBlogUser);
    			Iterator it = list.iterator();
    			
    			while(it.hasNext()) {
    				returnBlogUser = (BlogUser)it.next();
    				
    				System.out.println("UserID =" + returnBlogUser.getUserID());
    				System.out.println("UserName =" + returnBlogUser.getUserName());
    				System.out.println("Role =" + returnBlogUser.getRole());
    				
    				System.out.println("======================\n");
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    
    	}
    
    }

     

     


    웹어플로된 예제

    Spring mvc + iBatis2 미니 방명록

    pom.xml 디펜던시 추가

    	<!-- ojdbc를 위한 repositories세팅 -->
    	<repositories>
    		<repository>
    			<id>ojdbc14</id>
    			<name>oracle.com</name>
    			<url>http://maven.geomajas.org/</url>
    		</repository>
    	</repositories>
    
    	<dependencies>
    
    		<!-- https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc14 -->
    		<dependency>
    			<groupId>com.oracle.jdbc</groupId>
    			<artifactId>ojdbc14</artifactId>
    			<version>10.2.0.1.0</version>
    		</dependency>
    	
        
        
        
        <dependency>
    			<groupId>commons-collections</groupId>
    			<artifactId>commons-collections</artifactId>
    			<version>3.2.2</version>
    		</dependency>
    		<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
    		<dependency>
    			<groupId>commons-dbcp</groupId>
    			<artifactId>commons-dbcp</artifactId>
    			<version>1.4</version>
    		</dependency>
    		<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>jstl</artifactId>
    			<version>1.2</version>
    		</dependency>

     

    ~~~예제 스프링매핑까지 730

     

    create table guestbook(
    idx number constraints pk_guestbook_idx primary key,
    password varchar2(10),
    name varchar2(20),
    subject varchar2(100),
    content varchar2(500),
    write_date varchar2(20)
    );
    
    drop sequence guest_idx_seq;
    create sequence guestbook_idx_seq start with 1 increment by 1;
    
    insert into guestbook values(
     guestbook_idx_seq.nextval, '1111','홍길동','연습','연습입니다.',to_char(sysdate,'yyyymmdd'));
     
     
     commit -- 웹어플이 아닌 커맨드 모드에서는 오토커밋이 아니므로 commit 해준다.
     
     select * from guestbook;

    DTO

    package guestbook.vo;
    
    public class GuestbookVo {
    
    	private int idx;
    	private String password, name, subject, content, write_date;
    	
    	public int getIdx() {
    		return idx;
    	}
    	public void setIdx(int idx) {
    		this.idx = idx;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSubject() {
    		return subject;
    	}
    	public void setSubject(String subject) {
    		this.subject = subject;
    	}
    	public String getContent() {
    		return content;
    	}
    	public void setContent(String content) {
    		this.content = content;
    	}
    	public String getWrite_date() {
    		return write_date;
    	}
    	public void setWrite_date(String write_date) {
    		this.write_date = write_date;
    	}
    
    }

    web.xml 리스너, 서블릿,매핑 등등

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    	id="WebApp_ID" version="4.0">
    
    	<!-- 컨텍스트 로더 리스너 지정 -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/applicationContext.*xml</param-value>
    	</context-param>
    
    	<servlet>
    		<servlet-name>guestbook</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>guestbook</servlet-name>
    		<url-pattern>*.guest</url-pattern>
    	</servlet-mapping>
    
    
    	<display-name>spring_ibatis</display-name>
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.htm</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>default.html</welcome-file>
    		<welcome-file>default.htm</welcome-file>
    		<welcome-file>default.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
     "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    	<bean id="dataSource"
    		class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    		<property name="driverClassName">
    			<value>oracle.jdbc.driver.OracleDriver</value>
    		</property>
    		<property name="url">
    			<value>jdbc:oracle:thin:@localhost:1521:XE</value>
    		</property>
    		<property name="username">
    			<value>jspuser</value>
    		</property>
    		<property name="password">
    			<value>1234</value>
    		</property>
    	</bean>
    
    	<bean id="sqlMapClient"
    		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="configLocation" value="/WEB-INF/SqlMapConfig" />
    	</bean>
    
    
    </beans>

    'Spring' 카테고리의 다른 글

    210705_2(iBatis)  (0) 2021.07.05
    210702_1(Spring)  (0) 2021.07.02
    210701_1(Spring_DI적용하기)  (0) 2021.07.01
    210630_1(Spring)  (0) 2021.06.30
    210629_1(Spring)  (0) 2021.06.29
Designed by Tistory.