'mybatis'에 해당되는 글 5건

  1. 2014.05.28 ibatis 쿼리에 list 타입 인자로 넣기
  2. 2014.05.22 ibatis namespace 2
  3. 2014.05.21 ibatis2 map
  4. 2014.05.21 ibatis / log4j 를 이용한 sql문 덤프
  5. 2014.05.14 ibatis - db framework
<insert>나 <select> 등에서
<iterate>를 이용하여 리스트를 동적으로 sql 문에 넣을 수 있다.

<iterate prepend="AND" property="UserNameList"  open="(" close=")" conjunction="OR">
  username=#UserNameList[]#
</iterate>

[링크 : https://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html

[링크 : http://blog.naver.com/cain007/170076719]

'프로그램 사용 > ibatis & mybatis' 카테고리의 다른 글

ibatis select sum() resultType / resultClass  (0) 2014.05.29
ibatis null  (0) 2014.05.29
ibatis / mybatis 데이터가 비어있는 경우(null)  (0) 2014.05.23
ibatis namespace  (2) 2014.05.22
ibatis2 map  (0) 2014.05.21
Posted by 구차니
xml을 통해 sql문들을 불러올 키인 'name' 이 중복될 경우 키가 중복된다고
Duplicate <sql>-include ... found 에러가 뜨게 된다.

com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/sql'.  Cause: com.ibatis.sqlmap.client.SqlMapException: Duplicate <sql>-include 'select-all' found.
com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
com.ibatis.sqlmap.engine.builder.xml.SqlMapParser.parse(SqlMapParser.java:40)
com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$10.process(SqlMapConfigParser.java:270)
com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)
com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:84)
com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:102)
com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:51)
com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:46)
com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
account.joinAction.<init>(joinAction.java:45)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:123)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:154)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:143)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:113)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:275)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:365)
com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38)
com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:83)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:74)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:494)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
 

이런 문제는 namespace를 통해 해결할 수 있으나
namespace를 쓰기 위해서는 ibatis 설정에서 사용이 가능하도록 설정 해주어야 한다.
useStatementNamespaces 는 기본값이 false이다.
Example: useStatementNamespaces=”false”
Default: false (disabled)
 
[링크 : http://ibatis.apache.org/docs/dotnet/datamapper/ch04s03.html


/src/sqlMapConfig.xml

<sqlMapConfig>
<properties resource="/dbconnect.properties" />
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="1" maxSessions="1"
maxTransactions="1" useStatementNamespaces="true" />

<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
</dataSource>
</transactionManager>

<sqlMap resource="/sql/external.xml"/>
</sqlMapConfig> 

/src/sql/external.xml

<sqlMap namespace="user_namespace">
</sqlMap>

[링크 : http://www.okjsp.net/seq/89041]
Posted by 구차니
일반적인 상황에서는 ibatis2를 통해 인자를 하나만 넘겨줄수 있는데
2개 이상 필요할 경우에는 DAO를 통해 클래스로 넘기거나
Map 객체를 통해 여러개의 값을 넘겨줄 수 있다.

[링크 : http://okjsp.net/bbs?seq=206384]
[링크 : http://masachi.tistory.com/258]
Posted by 구차니
ibatis의 단점(?)아닌 단점으로는
실제로 값이 넘어가는지 알기가 어렵다는 점인데..
log4j를 이용하여 로그로 콘솔을 통해 디버깅이 용이하도록
SQL 문 자체를 출력할 수 있다.

DEBUG [http-8080-3] -Created connection 1249656.
DEBUG [http-8080-3] -{conn-100000} Connection
DEBUG [http-8080-3] -{conn-100000} Preparing Statement:       SELECT * FROM SBOARD2      WHERE boardId = ? ORDER BY ref DESC, re_step ASC  
DEBUG [http-8080-3] -{pstm-100001} Executing Statement:       SELECT * FROM SBOARD2      WHERE boardId = ? ORDER BY ref DESC, re_step ASC  
DEBUG [http-8080-3] -{pstm-100001} Parameters: [null]
DEBUG [http-8080-3] -{pstm-100001} Types: [null]
DEBUG [http-8080-3] -{rset-100002} ResultSet
DEBUG [http-8080-3] -Returned connection 1249656 to pool. 

 # Global logging configuration
log4j.rootLogger=ERROR, stdout

# SqlMap logging configuration
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.BasicDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG

log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

# Console output
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] -%m%n

[링크 : http://northface.tistory.com/15]
[링크 : http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip]

'프로그램 사용 > ibatis & mybatis' 카테고리의 다른 글

ibatis 쿼리에 list 타입 인자로 넣기  (0) 2014.05.28
ibatis / mybatis 데이터가 비어있는 경우(null)  (0) 2014.05.23
ibatis namespace  (2) 2014.05.22
ibatis2 map  (0) 2014.05.21
ibatis - db framework  (0) 2014.05.14
Posted by 구차니
ibatis는 현재 mybatis로 이름이 변경되었다.

db를 위한 프레임워크로
코드상에 sql문을 넣는게 아닌 xml에 sql문을 넣어 관리가 용이하도록 한다.

[링크 : https://ibatis.apache.org/]
[링크 : http://blog.mybatis.org/]
  [링크 : http://mybatis.github.io/mybatis] 문서
Posted by 구차니