SpringMVC 集成 JFinal Dao

现在接触到一个项目,使用的的是SpringMVC,持久层用了,Hibernate、MyBatis、JDBC.............................,几百个表,人都要写炸了.................

开始怀恋以前使用JFinal的时候,方便的Dao操作;

研究了一下,就集成进来了,经过测试,MySql,Oracle,事物这些也都正常。

<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

Spring XML 文件中注册bean

<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继承

extends com.jfinal.plugin.activerecord.Model

添加注解

@TableBind(tableName = "表名", pkName = "主键")

现在启动项目就可以使用了。

但是有个问题。事物没有让Spring控制到。

解决办法如下,

修改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)


好了,可以放心使用了。  :)

你可能感兴趣的:(spring,springMVC,jFinal,Spring集成JFinal)