Code Archive/myBatis

테이블 값이 매번 다를때 xml에서 쿼리 작성법

쌍큐 2015. 4. 8. 02:57

HashMap에 정보를 담아 parameter로 넘긴다...

<select id="selectAllMemberMonthWarface" parameterType="hashmap" resultType="hashmap">

select * from (select code, nick from guildmember) member, ${table} score where member.code = score.code

</select>


$으로 해야 자동으로 set을 안한다. #으로하면 자동으로 set을 해줌

그런데 항상 느끼지만 정말... 비효율적인거 같다.

어쩔수 없이 String 하나만 넘기는 것이더라도 String 역시 class 타입이기에 set/get 메서드로 찾기에 안됨...


그럼 #을 붙여서 하면 안되냐? 라고 할수 있지만 set이 된다는건 '내용' 이렇게 되기에 할수가 없다.

그예제로

<select id="load" parameterType="string" resultMap="AddressVO">

select * from #{table}

</select>

시행을 해보면 Exception이 장렬히 발생한다...


Exception 메세지를 보면

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''table'' at line 1
Query is:
sql : 'select * from ?', parameters : ['table']
### The error may involve com.mybatis.kr.AddressDAO.load-Inline
### The error occurred while setting parameters
### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''table'' at line 1
Query is:
sql : 'select * from ?', parameters : ['table']
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


줄 그은 부분을 보면 파라미터로 보낸 것이 #으로 했기에 set이 되므로 자동적으로 ' 이 자동적으로 양 옆에 붙어서 소용이 없다.



그래서 그냥 짜증나더라도 맵에다가 넣어서 쓰길바람... 그래야 암 안걸림...

'Code Archive > myBatis' 카테고리의 다른 글

MariaDB 테이블 Mybatis로 검색 방법  (0) 2015.04.08
메이븐을 이용한 mybatis getting started  (0) 2015.03.31