Ormlite在一般java环境(android)中操作Sqlite

最开始接触ormlite是在android的开发中,ormlite的简单便利让我印象深刻。

这几天在研究顾客购物行为,需要使用到数据库,但是对于数据库的速度什么的要求不大,我首先想到的是Ormlite+Sqlite。

实体类

ormlite的官网http://ormlite.com/,最新版本4.41

因为是在一般java环境中使用,所以不需要那个android包。

ormlite-sqlite

引入包以后建立modal,例如:Commodity.java。因为使用的sqlite,主键自增长,设置为

@DatabaseField (generatedId = true )

完整的代码如下:

package  com.cnblogs.htynkn.DataSpider.Modal;
 
import  com.j256.ormlite.field.DatabaseField;
import  com.j256.ormlite.table.DatabaseTable;
 
/**
  * @author 夜明的孤行灯
  * @date 2012-6-29
  */
 
@DatabaseTable (tableName = "Commodity" )
public  class  Commodity {
     @DatabaseField (generatedId = true )
     private  int  id;
     @DatabaseField (columnName = "Name" )
     private  String name;
     @DatabaseField (columnName = "JdKey" )
     private  String jdKey;
     @DatabaseField (columnName = "TbKey" )
     private  String tbKey;
 
     public  Commodity() {
 
     }
 
     public  int  getId() {
         return  id;
     }
 
     public  void  setId( int  id) {
         this .id = id;
     }
 
     public  String getName() {
         return  name;
     }
 
     public  void  setName(String name) {
         this .name = name;
     }
 
     public  String getJdKey() {
         return  jdKey;
     }
 
     public  void  setJdKey(String jdKey) {
         this .jdKey = jdKey;
     }
 
     public  String getTbKey() {
         return  tbKey;
     }
 
     public  void  setTbKey(String tbKey) {
         this .tbKey = tbKey;
     }
}

获取Dao

ormlite在android中的使用比较方便,有兴趣的朋友可以参考http://www.cnblogs.com/htynkn/archive/2011/10/30/android_ormlite_1.html

在上面的那篇文章中我们的DataHelper继承了OrmLiteSqliteOpenHelper。这是类是ormlite-android特有的。在一般的java环境中使用还不能这么简单。

Ormlite的官网有提到从jdbc入手,使用DaoManager创建Dao。比如:

String connectionString = "jdbc:sqlite:data.db" ;

意思是使用当前目录的data.db文件。ormlite没有包含sqlite的jdbc包,我们需要自己去下载一个。

这个地方一定要注意,sqlite的jdbc包有很多,我们必须要支持主键自增长那种。比如Xerial driver,我最开始使用的是Zentus driver,怎么弄都弄不起。

使用

DaoManager.createDao(GetConnectionSource(),Commodity. class );

获取Dao<Commodity, Integer>。如果需要创建表,可以使用TableUtils。

完整代码如下:

package  com.cnblogs.htynkn.DataSpider.Data;
 
import  java.sql.SQLException;
 
import  org.apache.commons.logging.Log;
import  org.apache.commons.logging.LogFactory;
 
import  com.cnblogs.htynkn.DataSpider.Modal.Commodity;
import  com.cnblogs.htynkn.DataSpider.Modal.TransactionRecord;
import  com.j256.ormlite.dao.Dao;
import  com.j256.ormlite.dao.DaoManager;
import  com.j256.ormlite.jdbc.JdbcConnectionSource;
import  com.j256.ormlite.support.ConnectionSource;
import  com.j256.ormlite.table.TableUtils;
 
/**
  * @author 夜明的孤行灯
  * @date 2012-6-29
  */
 
public  class  SqliteOpenHelper {
     private  static  Log log = LogFactory.getLog(SqliteOpenHelper. class );
     private  static  Dao
     private  static  Dao commodityDao;
 
     public  static  Dao GetCommodityDao() throws  SQLException {
         if  (commodityDao == null ) {
             commodityDao = DaoManager.createDao(GetConnectionSource(),
                     Commodity. class );
         }
         return  commodityDao;
     }
 
     public  static  void  init() {
         try  {
             TableUtils.createTable(GetConnectionSource(), Commodity. class );
         } catch  (Exception exception) {
             log.warn( "创建Commodity表失败 : "  + exception.getMessage());
         }
     }
 
     public  static  ConnectionSource GetConnectionSource() throws  SQLException {
         String connectionString = "jdbc:sqlite:data.db" ;
         return  new  JdbcConnectionSource(connectionString);
     }
}

 

高级查询

ormlite的Dao支持简单的添加、删除、修改还有按照Id查询,当然也可以使用原生的SQL。如果需要条件查询就需要使用QueryBuilder了。

QueryBuilder qb = dao.queryBuilder();

举个例子,我们需要查询一个时间段的数据

qb.where().between( "TransactionTime" , start, end);
return  qb.query();

这里会返回一个List,然后在继续处理就行了。

如果确实需要使用原生的SQL语句就可以用

dao.queryRaw(query, arguments)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值