Jfinal数据库操作在WebService或非web项目中的使用

接触上jfinal后就基本不使用其它框架了,一直在web开发中使用,最近做了个小的WebService应用,还是使用jfinal操作数据库,在这里分享下使用经验。
我的环境是三个oracle数据库,一个数据库接收数据,然后分发数据到另外两个数据库,使用jfinal的多数据源功能刚好满足要求。
编写数据库初始化类:
直接上代码

package ynitil.pekk.ws.common;

import java.util.List;

import ynitil.pekk.ws.model.Cltxb;
import ynitil.pekk.ws.model.CltxbArch;
import ynitil.pekk.ws.model.CltxbDh;
import ynitil.pekk.ws.model.IdCode;
import ynitil.pekk.ws.model.Kkcl;
import ynitil.pekk.ws.model.KkclArch;
import ynitil.pekk.ws.model.KkclPekk;
import ynitil.pekk.ws.model.TrfPic;
import ynitil.pekk.ws.model.UpInfo;
import ynitil.pekk.ws.model.UpInfoArch;

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.DbKit;
import com.jfinal.plugin.activerecord.dialect.OracleDialect;
import com.jfinal.plugin.druid.DruidPlugin;

public class WsInit {
 static DruidPlugin dpWs;
 static ActiveRecordPlugin arpWs;
 
 static DruidPlugin dpPekk;
 static ActiveRecordPlugin arpPekk;
 
 static DruidPlugin dpSyncProv;
 static ActiveRecordPlugin arpSyncProv;
 static{
  init();
 }
 public static void init(){
  initWsDb();//初始化本地库
  initPekkDb();//初始化PEKK库
  initSyncProvDb();//初始化上传XX库
//  HandleData.start();//转存数据到服务器
 }
 //初始化本地数据库
 public static void initWsDb(){
  if(dpWs!=null){
   return;
  }
  dpWs = new DruidPlugin(FileOp.readPropByKey("jdbcUrl"),
    FileOp.readPropByKey("user"), 
    FileOp.readPropByKey("password"));

  dpWs.setDriverClass(FileOp.readPropByKey("jdbcDrive"));
  dpWs.start();
  arpWs = new ActiveRecordPlugin(DbKit.MAIN_CONFIG_NAME,dpWs);
  arpWs.setDialect(new OracleDialect());
  // 设置大小写不敏感
  arpWs.setContainerFactory(new CaseInsensitiveContainerFactory());
  
  arpWs.addMapping("IdCode","idCode", IdCode.class);//
  arpWs.addMapping("UpInfo","id", UpInfo.class);//
  arpWs.addMapping("UPInfo_Arch","id", UpInfoArch.class);//
  arpWs.addMapping("Kkcl","clbh", Kkcl.class);//
  arpWs.addMapping("Kkcl_Arch","clbh", KkclArch.class);//
  arpWs.addMapping("Cltxb","clbh", Cltxb.class);//
  arpWs.addMapping("Cltxb_Arch","clbh", CltxbArch.class);//
  arpWs.addMapping("Equipment","sbbh", Equipment.class);//
  arpWs.addMapping("TrfPic","id", TrfPic.class);//
  arpWs.start();
  System.out.println("本地数据库初始化成功.............................");
 }
 //初始化PEKK数据库
 public static void initPekkDb(){
  if(dpPekk!=null){
   return;
  }
  dpPekk = new DruidPlugin(FileOp.readPropByKey("jdbcUrl_pekk"),
    FileOp.readPropByKey("user_pekk"), 
    FileOp.readPropByKey("password_pekk"));

  dpPekk.setDriverClass(FileOp.readPropByKey("jdbcDrive"));
  dpPekk.start();
  arpPekk = new ActiveRecordPlugin("pekk",dpPekk);
  arpPekk.setDialect(new OracleDialect());
  // 设置大小写不敏感
  arpPekk.setContainerFactory(new CaseInsensitiveContainerFactory());
  
  String kkcl = FileOp.readPropByKey("pekkTable");
  arpPekk.addMapping(kkcl,"CLBH", KkclPekk.class);//
  arpPekk.start();
  System.out.println("PEKK数据库初始化成功.............................");
 }
 
 //初始化同步XXX数据库
 public static void initSyncProvDb(){
  if(dpSyncProv!=null){
   return;
  }
  dpSyncProv = new DruidPlugin(FileOp.readPropByKey("jdbcUrl_syncProv"),
    FileOp.readPropByKey("user_syncProv"), 
    FileOp.readPropByKey("password_syncProv"));

  dpSyncProv.setDriverClass(FileOp.readPropByKey("jdbcDrive"));
  dpSyncProv.start();
  arpSyncProv = new ActiveRecordPlugin("syncProv",dpSyncProv);
  arpSyncProv.setDialect(new OracleDialect());
  // 设置大小写不敏感
  arpSyncProv.setContainerFactory(new CaseInsensitiveContainerFactory());
  
  String cltxb = FileOp.readPropByKey("syncProvTable");//动态映射到配置的指定表
  arpSyncProv.addMapping(cltxb,"jlbh", CltxbDh.class);//
  arpSyncProv.start();
  System.out.println("上传XX库初始化成功.............................");
 }  
 }
}

说明一下,定义变量的时候我用的是static的,里面的FileOp是自己的一个工具类。
初始化我是在Delegate类里进行的:

public class UpInfoServerDelegate {
static{
WsInit.init();
}
..................
}
}

项目启动以后,所有的操作和WEB项目一样,该使用Model的地方还是使用Model,使用Db的地方还是使用Db,但是要注意使用注册的名字。
如:
Db.use("pekk").find("..............")//使用pekk库
model的使用就不用考虑注册的名字了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,如果您使用JFinal框架,可以按照以下步骤集成数据库数据: 1. 在JFinal配置文件(通常为config文件)配置数据库连接参数,例如: ```java public class DemoConfig extends JFinalConfig { public void configConstant(Constants me) { // ... } public void configRoute(Routes me) { // ... } public void configPlugin(Plugins me) { // 配置数据库连接池插件 DruidPlugin dp = new DruidPlugin("jdbc:mysql://localhost:3306/mydb", "root", "password"); me.add(dp); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(dp); me.add(arp); // 配置Model映射 arp.addMapping("mytable", MyTable.class); } public void configInterceptor(Interceptors me) { // ... } public void configHandler(Handlers me) { // ... } } ``` 其,mydb为数据库名称,root和password分别为数据库的用户名和密码,mytable为要映射的表名,MyTable为对应的Model类。 2. 定义Model类。Model类表示数据库的一张表,例如: ```java public class MyTable extends Model<MyTable> { public static final MyTable dao = new MyTable(); // ... } ``` 在类定义静态变量dao,用于访问该表的数据。 3. 执行查询语句。使用JFinal的Model类的静态方法可以执行查询语句并将结果存储到List对象,例如: ```java List<MyTable> list = MyTable.dao.find("SELECT * FROM mytable"); ``` 其,mytable为要查询的表名。 4. 处理查询结果。通过List对象可以获取查询结果的各个字段的值,例如: ```java for (MyTable mytable : list) { int id = mytable.getInt("id"); String name = mytable.getStr("name"); int age = mytable.getInt("age"); // ... } ``` 这里假设查询结果包含id、name和age三个字段。 以上就是JFinal集成数据库数据的基本步骤,您可以根据具体情况进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值