2019年7月26日 星期五

Program - Maven SpringMVC Project 搭配 iBATIS

現在大部分的專案都物件化
以前碰過Hibernate專案
因歷代維運的痕跡最後被我翻版下線了
現在卻因為新的專案再導入iBATIS
又要走回去的感覺 😳



來點iBATIS基本知識筆記
 一詞來源於「internet」和「abatis」的組合
 最初重於密碼軟體的開發,現在是一個基於Java的持久層框架
 持久層框架包括SQL Maps和Data Access Objects(DAO)
 開發人員自己來寫sql語句(靈活性)

iBATISHibernate都做了映射:
§ iBATIS是把實體類sql語句之間建立了映射關係,可以允許開發人員自己來寫合適的sql語句
§ Hibernate實體類資料庫之間建立了映射關係,sql對於開發人員是不可見的

所以實際應用,還是要看看自己專案適合哪種囉 😊😉
當初翻版的下線的就因多客製的關係,整個專案呈現詭異的邏輯


假設開發環境已安裝完畢Maven 💪
接下來就把相關設定添加

pom.xml 設定
<dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis</artifactId>
 <version>3.4.4</version>
</dependency>
<dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis-spring</artifactId>
 <version>1.3.1</version>
</dependency>


applicationContext.xml 設定
<bean id="iBatisDataSourceDemo" class="packagePath.DynamicDataSourceDemo">
 <description>iBatis客製化動態資料源元件(Demo元件)</description>
 <property name="targetDataSources">
  <map key-type="java.lang.String">
   <entry value-ref="dataSource" key="schemaUser"></entry>
  </map>
 </property>
 <property name="defaultTargetDataSource" ref="dataSource">
  <description>預設資料源的設定</description>
 </property>
</bean>

applicationContext-service.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:configLocation="classpath:mybatis-Demo.xml" p:dataSource-ref="iBatisDataSourceDemo" p:mapperLocations="classpath*:packagePath/**/*.xml" />
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="iBatisDataSourceDemo">
 <qualifier value="schemaUser" />
</bean>
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="packagePath" p:annotationClass="packagePath.annotation.Mapper"
 p:sqlSessionFactoryBeanName="sqlSessionFactory" />
<tx:annotation-driven transaction-manager="transactionManager" />


根據以上的設定的新增對應的檔案

mybatis-Demo.xml
<plugins>
 <plugin interceptor="packagePath.pagination.PaginationInterceptor">
  <property name="databaseType" value="SQLServer2005" />
  <property name="nameRegularExpress" value=".*WithPagination.*" />
 </plugin>
</plugins>

*.xml
<javaModelGenerator targetPackage="packagePath" targetProject="src/main/java/">
 <property name="enableSubPackages" value="true" />
 <property name="trimStrings" value="true" />
 <property name="constructorBased" value="false" />
</javaModelGenerator>

<sqlMapGenerator targetPackage="packagePath" targetProject="src/main/resources">
 <property name="enableSubPackages" value="true" />
</sqlMapGenerator>

<javaClientGenerator targetPackage="packagePath" type="MIXEDMAPPER" targetProject="src/main/java/">
 <property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- =============================table list ============================= -->
<table tableName="TABLENAME" domainObjectName="TABLENAME_PARAMS_NAME" delimitIdentifiers="true" delimitAllColumns="true">
 <property name="ignoreQualifiersAtRuntime" value="true" />
</table>


以上設定完成後,就可以Gen Code使用囉 😎
如果沒有成功,就要看以上的設定是否有對應名稱
剛開始設定的時候眼花撩亂 😆😆😆




our code...

沒有留言:

張貼留言