ibatis 升級到 mybatis 總結
mybatis 不是 ibatis 的升級版,而 ibatis 已成過去式,官方早已不再維護,使用 ibatis 的老應用遷移到 mybatis 很有必要。
sql DAO 改動
ibatis 使用 spring 封裝好的 SqlMapClientTemplate 進行 dao 類的增刪改查,但是 spring 4 以後則不再支援 ibatis,所以 SqlMapClientTemplate 類只能在 spring 3 中找到。
import com.ibatis.sqlmap.client.SqlMapClient; public class BaseDao extends SqlMapClientTemplate { @Autowired private SqlMapClient sqlMapClient; @PostConstruct public void initSqlMapClient() { super.setSqlMapClient(this.sqlMapClient); } }
資料來源配置變更
ibatis 使用的是 SqlMapClientTemplate 物件,dataSource 配置如下:
<!-- sqlMapClient --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="classpath:sqlmap-config.xml"/> <property name="dataSource" ref="linkedKeeperDataSource"/> </bean>
mybatis 使用的是 SqlSessionTemplate,資料來源需要改動配置:
<bean id="sqlMapClient" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:mybatis-config.xml"/> <property name="typeAliasesPackage" value="com.linkedkeeper.domain,com.linkedkeeper.domain.query"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> <property name="dataSource" ref="linkedKeeperDataSource"/> </bean>
升級 mybatis 後是可以不需要 dao 的實現類的,使用 MapperScannerConfigurer 掃描載入。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.linkedkeeper.dao.mapper"/> <property name="sqlSessionFactoryBeanName" value="sqlMapClient"/> </bean>
mybatis Maven
在 maven 的 pom.xml 引入配置如下:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency>
mapper XML 轉換
網上有工具可以自動轉,但也可以自己手動修改。
Reference:
https://blog.csdn.net/u010856276/article/details/82146607
https://blog.csdn.net/lanxuezaipiao/article/details/52902074
本文受原創保護,未經作者授權,禁止轉載。 linkedkeeper.com (文/張鬆然)