Mybatis 데이터베이스 연동
이전 방법 - SQL 선언문, 커낵션 등등 선언해야 할 것이 많았음. -> Mybatis를 통해서 해결할 것임.
Mybatis template
Myspring 부분 리뷰
1 xmlns:tx="http://www.springframework.org/schema/txcs 트랜잭션 처리하는 부분 -> Myspring >
1 <tx:annotation-driven transaction-manager="txManager"/>cs 트랜잭션을 어노테이션 기반으로 처리하겠다.
12345678 <!-- 1. Database Setting --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@70.12.114.50:1521:xe"/><property name="username" value="db"/><property name="password" value="db"/></bean>cs DB연결 부분. url 챙길 것.
12345 <!-- 2. Transaction Setting --><bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean>cs 트랜잭션 처리. 위에 선언된 dataSource를 dataSource라는 이름으로 할당함.
12345 <!-- 3. MyBatis Setting --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:com/mybatis/mybatis.xml"/></bean>cs 스프링과 Mybatis를 합친다.
<property name="configLocation" value="classpath:com/mybatis/mybatis.xml"/>
마이바티스의 환경설정. xml을 따로 설정한다. 프로젝트 기준 classpath는 src.
따라서 위치는 com.mybatis아래에 mybatis.xml을 만들어야한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org/DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias type="com.vo.User" alias="user"/> <typeAlias type="com.vo.Product" alias="product"/> </typeAliases> <mappers> <mapper resource="com/mybatis/usermapper.xml"/> <mapper resource="com/mybatis/productmapper.xml"/> <mapper resource="com/mybatis/searchmapper.xml"/> </mappers> </configuration> | cs |
마이바티스 내부
<typeAlias type="com.vo.User" alias="user"/>
com.vo.User를 user로 할당한다.
<mapper resource="com/mybatis/usermapper.xml"/>
SQL문서를 xml로.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?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="com.mapper.UserMapper"> <insert id="insert" parameterType="user"> INSERT INTO T_USER VALUES (#{id},#{pwd},#{name}) </insert> <update id="update" parameterType="user"> UPDATE T_USER SET PWD=#{pwd},NAME=#{name} WHERE ID=#{id} </update> <delete id="delete" parameterType="String"> DELETE FROM T_USER WHERE ID=#{obj} </delete> <select id="select" parameterType="String" resultType="user"> SELECT * FROM T_USER WHERE ID=#{obj} </select> <select id="selectall" resultType="user"> SELECT * FROM T_USER </select> </mapper> | cs |
usermapper.xml.
SQL문은 알맞게 수정할 것.
Q. 여기서 id는 .java의 펑션 네임을 가르키는 것인가? 그렇다면 이름이 같고, 인풋갯수가 다른(overload)의 경우엔 어떻게 할 것인가?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package com.mapper; import java.util.ArrayList; import com.vo.User; public interface UserMapper { public void insert(User obj); public void delete(String obj); public void update(User obj); public User select(String obj); public ArrayList<User> selectall(); } | cs |
Usermapper.java 스프링에서 마이바티스로 들어올때 위의 기능들을 사용한다. .java 와 .xml의 기능이 대응되는 것을 볼 수 있음.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package com.component; import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.frame.Dao; import com.mapper.UserMapper; import com.vo.User; @Repository("userdao") public class UserDao implements Dao<String, User> { @Autowired UserMapper um; @Override public void insert(User v) throws Exception{ System.out.println("Inserted:"+v); um.insert(v); } @Override public void update(User v) throws Exception{ um.update(v); System.out.println("Updated:"+v); } @Override public void delete(String k) throws Exception{ System.out.println("Deleted:"+k); um.delete(k); } @Override public User select(String k) throws Exception{ User user = um.select(k); return user; } @Override public ArrayList<User> select() throws Exception{ ArrayList<User> list = um.selectall(); return list; } } | cs |
UserDao 부분 세팅.
해결 못한부분. Search Range. -> 테이블을 조인해야 하는 것인가?
댓글
댓글 쓰기