7.데이터프레임워크/myBatis

SQL 조건절 IN 안에 조건 여러개 넣기

마이바티스로

IN 조건절 안에 조건 여러개 넣는 방법



<application-properties.xml>

1
2
3
<!-- 영업팀 ID -->
<entry key="salesTeam">M0020,M0022,M0033</entry>
 
cs



<Controller.java>

1
2
3
4
5
6
7
8
9
/* 영업팀 ID 정보 */
@Value("#{config[salesTeam]}")
private String salesTeam;
 
~~중간생략~~
 
/* 영업팀 토큰 정보 가져오기 */
String[] salesTeamArray = salesTeam.split(",");
 
List<HashMap<StringString>> salesTeamTokenInfo = pushService.getSalesTeamTokenInfo(salesTeamArray);
cs



<Service.java>

1
2
3
public List<HashMap<StringString>> getSalesTeamTokenInfo(String[] salesTeamArray) {
    return pushMapper.getSalesTeamTokenInfo(salesTeamArray);
}
cs



<Mapper.xml>

1
2
3
4
5
6
7
8
9
10
11
12
13
<select id="getSalesTeamTokenInfo" parameterType="list" resultType="HashMap">
    SELECT A.TOKEN,
           B.DEVICE
      FROM 테이블에이 A,
           테이블비 B
     WHERE 조인조건
       AND A.MEM_IDX IN
       <foreach collection="array" item="memIdx" index="index" open="(" separator="," close=")">
       #{memIdx}
       </foreach>    
</select>
cs


myBatis mssql insert 후 바로 시퀀스값 select 하기


MS SQL 테이블 값 인서트하면 자동증가 컬럼 값을 가져오는 방법이 애매해서 찾아보던 중

<selectKey keyProperty> 라는 것을 알게 되어 정리~



<Controller>

1
2
3
4
5
6
7
@RequestMapping(value="/test", method=RequestMethod.GET)
public void testPush(@RequestParam HashMap<String, Object> paramMap, HttpServletRequest request, HttpServletResponse response) throws Exception {
    
    pushService.insertPush(paramMap);
    int pushIdx = (int) paramMap.get("idx");
    
}
cs


HashMap 을 paramMap 이라는 이름의 파라미터로 TABLE_PUSH 에 인서트 하도록 한다


테이블 TABLE_PUSH 의 구조는

IDX(int), SUBJECT(String), MESSAGE(String) 컬럼 3개




<Mapper>

1
2
3
4
5
6
7
8
9
<insert id="insertPush" parameterType="map">
    INSERT INTO TABLE_PUSH (SUBJECT, MESSAGE)
    VALUES (#{subject},
            #{message}            
           );
    <selectKey keyProperty="idx" resultType="Integer" order="AFTER">
        SELECT IDENT_CURRENT('TABLE_PUSH')
    </selectKey>
</insert>
cs


<selectKey keyProperty="컬럼명" resultType="컬럼타입" order="실행시기">

SELECT IDENT_CURRENT('테이블명')



그렇게 하면 <insert> 의 parameterType="map" 으로 썼던 파라미터 paramMap 의 idx 에

현재 자동증가값이 얼마인지 들어가 있게 된다





또는 useGeneratedKeys 를 사용할 수도 있다

1
2
<insert id="insertData" parameterType="DataClass" useGeneratedKeys="true" keyProperty="id">
 
cs


+ Recent posts