如今接觸到一個項目,使用的的是SpringMVC,持久層用了,Hibernate、MyBatis、JDBC.............................,幾百個表,人都要寫炸了................. java
開始懷戀之前使用JFinal的時候,方便的Dao操做; web
研究了一下,就集成進來了,通過測試,MySql,Oracle,事物這些也都正常。 sql
<dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-ext</artifactId> <version>3.1.4</version> </dependency>
使用 com.jfinal.ext.plugin.tablebind.AutoTableBindPlugin 自動掃描 Model app
Spring XML 文件中註冊bean webapp
<bean id="autoTableBindPlugin" class="com.jfinal.ext.plugin.tablebind.AutoTableBindPlugin" init-method="start"> <constructor-arg ref="dataSource" name="dataSource"/> <property name="showSql" value="true"/> <!-- 用於Oracle,默認是MySql <property name="dialect"> <bean class="com.jfinal.plugin.activerecord.dialect.OracleDialect"/> </property> <property name="containerFactory" > <bean class="com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory"/> </property> --> </bean>
按照JFinal的方式,實體Model繼承 maven
extends com.jfinal.plugin.activerecord.Model
添加註解 測試
@TableBind(tableName = "表名", pkName = "主鍵")
如今啓動項目就能夠使用了。 this
可是有個問題。事物沒有讓Spring控制到。 spa
解決辦法以下, code
修改JFinal源碼
com.jfinal.plugin.activerecord.Config 中的 getConnection(),以及 3個close()方法中的獲取,關閉對象的方法, 獲取:java.sql.Connection 改成: DataSourceUtils.getConnection(this.getDataSource()); 關閉:java.sql.ResultSet 改成: JdbcUtils.closeResultSet(rs); 關閉:java.sql.Statement 改成: JdbcUtils.closeStatement(st); 編譯以後,替換原有文件中的Config文件
使用Maven是朋友,能夠使用下面這種方式,添加本地的jar包,但須要注意依賴jar包是否所有倒入,在maven的依賴關係中就能夠看到具體依賴了那些包,那些版本。
<dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>2.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jfinal-2.0-edit.jar</systemPath> </dependency>
事物:這裏我使用註解的方式
<tx:annotation-driven transaction-manager="transactionManager" />
Service 中加入
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
好了,能夠放心使用了。 :)