MyBatis는 FrameWork 다.
pom.xml에 MyBatis를 등록한다.
root-context.xml 에서 객체를 생성해준다.(Bean태그는 id를 이름으로 하는 객체를 생성한다, 그 안의 property태그는 걍 멤버변수라고 생각하자)
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:/mybatis-config.xml"/>
</bean>
<context:component-scan base-package="sdo.md.mapper"/>
<mybatis-spring:scan base-package="sdo.md.mapper"/>
위의 bean태그는 히카리라이브러리(DBCP)에서 만들어준 DBCP객체이고, 밑의 bean태그는 MyBatis의 객체이다. MyBatis의 객체는 DBCP객체를 프로퍼티로 쓴다.(당연히 DB에서 데이터를 가져와야하니까)
밑의 프로퍼티는 mybatis-config.xml의 위치를 지정한다
가장 밑의 2개의 태그는 Spring이 MyBatis에서 쓰이는 java, xml 을 찾는 패키지를 지정한다. 단, mybatis-spring 태그는 root-context.xml의 NameSpace탭에서 추가해야 사용할 수 있다.
<?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 alias="Address" type="sdo.md.domain.Address"/>
<typeAlias alias="Board" type="sdo.md.domain.Board"/>
</typeAliases>
<mappers>
<mapper resource="sdo/md/mapper/AddressMapper1.xml"/>
<mapper resource="sdo/md/mapper/BoardMapper.xml"/>
</mappers>
</configuration>
typeAliase태그는 DTO객체를 매퍼.xml에서 간편하게 사용할 수 있도록 알리아스를 지정하는 태그
mapper태그는 mybatis에서 사용할 mapper.xml을 지정하는 태그. mapper.xml은 src/main/resources/밑에 만들어준다. (mapper.xml은 DAO 클래스의 역할을 한다.)
<?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="sdo.md.mapper.AddressMapper1">
<select id="list" resultType="Address">
select * from ADDRESS order by SEQ desc
</select>
<insert id="insert" parameterType="Address">
insert into ADDRESS values(ADDRESS_SEQ.nextval, #{name}, #{addr}, SYSDATE)
</insert>
<delete id="delete" parameterType="long">
delete from ADDRESS where SEQ= #{seq}
</delete>
</mapper>
namespace속성은 이 mapper.xml과 매핑될 mapper.java(인터페이스)를 의미한다.
package sdo.md.mapper;
import java.util.List;
import sdo.md.domain.Address;
public interface AddressMapper1 {
List<Address> list();
void insert(Address address);
void delete(long seq);
}
이거 따라했더니 에러나는데 책임지시죠