mybatis 매퍼xml

이태규·2022년 3월 28일
0

spring

목록 보기
21/64

config 파일 만들기

package com.example.config;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
public class MybatisConfig {

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) 
    throws Exception {
        System.out.println("datasource configuration");
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);

        // mappers 위치 설정
        Resource[] arrResource = new PathMatchingResourcePatternResolver()
                .getResources("classpath:/mappers/*Mapper.xml");
        sqlSessionFactoryBean.setMapperLocations(arrResource);
        return sqlSessionFactoryBean.getObject();
    }
}

example > confing > MybatisConfig.java

xml파일 만들기

resources > mappers > memberMapper.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="selectMemberOne"
        parameterType="String"
        resultType="com.example.dto.MemberDTO">
        SELECT M.* FROM MEMBER M WHERE M.UEMAIL=#{uemail}
    </select>

    <select id="selectMemberList" 
        resultType="com.example.dto.MemberDTO">
        SELECT M.*,
        TO_CHAR(UREGDATE, 'YYYY-MM-DD') UREGDATE1
        FROM MEMBER M
    </select>

<!-- parameter 타입이 없으면 안보내도 된다 -->
    <insert id = "insertMemberOne" 
        parameterType="com.example.dto.MemberDTO">
        INSERT INTO MEMBER( UEMAIL, UPW, UNAME, UPHONE, UROLE)
        VALUES(#{uemail},#{upw},#{uname},#{uphone},#{urole})
    </insert>

    <delete id="deleteMemberOne"
        parameterType="String">
        DELETE FROM MEMBER WHERE UEMAIL=#{uemail}
    </delete>

    <update id="updateMemberOne"
        parameterType="com.example.dto.MemberDTO">
        UPDATE member SET UEMAIL=#{uemail}, UPW=#{upw}, 
        UNAME=#{uname}, UPHONE=#{uphone}, UROLE=#{urole} WHERE UEMAIL=#{uemail}
    </update>
</mapper>

칼럼명 = #{dto에서 매치할 변수 이름}

아이디는 중복되면 안된다.
parameterType은 클래스 타입이면 파일 위치, String이면 String
받는 게 없으면 작성하지 않아도 된다.
resultType도 마찬가지

service에서 사용하기

  1. @Autowired
    SqlSessionFactory sqlFactory;

사용을 위해 Autowired해준다.

  1. 네임스페이스명(xml 파일 안에 있음).id명으로 호출함. 줄게 있으면 뒤에
    뒤에 공간 1칸 밖에 없음. xml 방식은 parameter로 하나밖에 못줌
@Override
    public int insertMember(MemberDTO member) {
        // namespace가
        return sqlFactory.openSession().insert("Member.insertMemberOne", member);
    }

    @Override
    public int updateMember(MemberDTO member) {

        return sqlFactory.openSession().update("Member.updateMemberOne", member);
    }

    @Override
    public List<MemberDTO> selectMemberList() {
       
        return sqlFactory.openSession().selectList(
                "Member.selectMemberList");
    }
profile
한 걸음씩 나아가자

0개의 댓글