Spring mybatis

손원진·2023년 5월 9일
0

[SPRING]

목록 보기
13/15

설정 값

build.gradle 에 mybatis implements를 위해 설정값을 넣어줌


dependencies {
	//mybatis 추가 
    implementation 'org.mybatis.spring.boot:my-batis-spring-boot-starter:2.2.0'
}

옵션 값

#mybatis
mybatis.type-alias-package=hello.wonjin.domain.service
//패키지 값을 미리 설정해둬서 id값을 패키지작성 없이 가져오도록 진행

mybatis.configuration.map-underscore-to-camel-case:true
//기본 sql에서 컬럼을 설정할 때 cont_item_info 와 같이 하단바로 단어를 구분, 그걸 자동으로 
캐멀 표기법으로 바꿔주는 옵션 

logging.level.hello.wonjin.domain:trace
//mybatis 로그가 나타나도록 설정 

mappper 생성 ( mybatis xml 문서와 연결을 위한)

Mapper
public interface ItemService {
     List<Item> select();

     void Insert(@Param("id") Long id ,@Param("updateParam") Item item);

     void update(Item item);
     
     void delete(Long id);
     //위인터페이스를 실행하면 xml 결과를 도출하고 결과값을 해당 메소드에 돌려줌 
     
     

--VO 
@Data                                               
public class Item {                                 
                                                    
    private Long id;                                
    private String name;                            
    private int number;                          
    private int cd;                                 
    private String grade;                           
                                                    
    public Long getId() {                           
        return id;                                  
    }                                               
                                                    
    public void setId(Long id) {                    
        this.id = id;                               
    }                                               
                                                    
    public String getName() {                       
        return name;                                
    }                                               
                                                    
    public void setName(String name) {              
        this.name = name;                           
    }                                               
                                                    
    public int getNumber() {                     
        return number;                              
    }                                               
                                                    
    public void setNumber(int number) {          
        this.number = number;                       
    }                                               
                                                    
    public int getCd() {                            
        return cd;                                  
    }                                               
                                                    
    public void setCd(int cd) {                     
        this.cd = cd;                               
    }                                               
                                                    
    public String getGrade() {                      
        return grade;                               
    }                                               
                                                    
    public void setGrade(String grade) {            
        this.grade = grade;                         
    }                                               

java 클래스에 맞춰서 xml생성

resources 폴더에 hello.wonjin,domain.service 경로를 생성했음 .

<?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="hello.wonjin.domain.service.ItemService">
    <select id="select" resultType="Item">
        select id,
               name,
               grade,
               number
        from item
        <where>
            <if test="name != null and name != 'wonjin'">
                and name like concat('%', #{name} , '%')
            </if>
            <if test="number != null">
                and number &lt;= #{number}
            </if>

        </where>
    </select>
    <update id="update">
        update item
        set name = #{updateParam.name},
            id   = #{updateParam.id},
            number= #{updateParam.number}
        where id = #{id}

    </update>
    <insert id="save" useGeneratedKeys="true" keyProperty="id">
        insert into item(id, name, number, grade)
        values (#{id}, #{name}, #{number}, #{grade})
    </insert>

</mapper>
  1. xml 에서 parameter를 사용하기 위해선 #{}로 감싸주면 되며, #{}사용하면 preparedStatement처럼 동작을 한다. JDBC 의 ?를 치환에 주는 역할로 생각하면 된다.

  2. useGenerateKeys - 데이터 베이스가 key를 생성해주는 IDENTITY 전략일 때 사용
    PropertyKey- 생성되는 key의 속성이름을 저장 insert가 끝나면 item객체에 id속성에 생성된 값이 입력됨

  3. select 시 alias를 지정해 주지않는 이유는 초기설정에서 mybatis.configuration.map-underscore-to-camel-case:true자동으로 캐멀표시법 으로 바꾸도록 설정했기 때문 ex) com_epm_sql을 comEpmSql로 자동 변경되어 retype에 반환됨

  1. "<![CDATA[<>&]] >"를 사용하여 &<>기호를 자유롭게 사용가능

  2. where 구문에서 if를 사용했을 때 조건절이 2개라면 자동으로 and 를 붙여서 사용하고
    하나라면 작성된 and를 없애고 where로 조건절이 타도록 자동으로 동작함.

profile
매일 한 걸음

0개의 댓글