如今接触到一个项目,使用的的是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)
好了,能够放心使用了。 :)