解决JFinal2.2连接Sqlite3无法对部分表进行操作

JFinal2.2中,类com.jfinal.plugin.activerecord.dialect.Sqlite3Dialect是对Sqlite数据库的原生增删改查sql语句进行封装。

不过Sqlite3中,部分表名是Sqlite数据库中的保留字。在对这些表进行操作的时候,必须要在这个保留字的前后加上引号('或"都可以),否则就会出现语法错误(syntax error)。

事实上,在所有表名的前后都加上引号是没有问题的。所以,若要修复这个小问题,我们只需要在com.jfinal.plugin.activerecord.dialect.Sqlite3Dialect类中,将这个类里面9个方法在sql语句表名拼接的前后加上引号就可以了(可以直接使用',若要使用",必须添加转义字符\")。这9个方法分别是:Db增删改查(4个)、Model增删改查(4个)以及forTableBuilderDoBuild(在generator中会被调用到)方法。

当然了,大家都是用的JFinal的JAR包,这个问题后续的版本可能会被修复。但急着用的小伙伴不能干等着啊。所以,我们需要自己重新编译一个JAR包才行。可以使用maven编译,也可以自己构建java工程编译.

自己构建步骤如下:

  1. 新建一个Java工程

  2. 将JFinal源码导入工程src中,简单粗暴,直接复制

  3. 通过build path导入jfinal-2.2-lib中所有的jar包

  4. 修改源码

  5. 导出jar包

 

maven编译步骤如下:

用 maven 管理,pom.xml 中全都配置好了,注意看这里的 pom.xml 文件:http://git.oschina.net/jfinal/jfinal

直接使用下面四步:
1:git clone https://git.oschina.net/jfinal/jfinal.git
2:根据你自己的需求修改源码
3:mvn compile
4:mvn package
通过这四步就将包打好了

 

由于个人在黄区办公,不能贴出代码,抱歉。

 

 

评论区

JFinal

2016-11-11 21:24

无法贴代码,这样分享一样是可以的,感谢支持 jfinal 社区 ^_^

cknote

2016-11-15 10:40

黄区办公是什么意思??

白菜先生

2016-11-15 15:06

@cknote 就是信息安全的级别比较高。

热门分享

扫码入社