Ormlite在一般java环境中操作Sqlite

30 6月

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2012/06/30/ormlite_3/

简介

最开始接触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")
publicclass Commodity {
@DatabaseField(generatedId =true)
privateint id;
@DatabaseField(columnName ="Name")
private String name;
@DatabaseField(columnName ="JdKey")
private String jdKey;
@DatabaseField(columnName ="TbKey")
private String tbKey;

publicCommodity() {

}

publicintgetId() {
return id;
}

publicvoidsetId(int id) {
this.id = id;
}

public StringgetName() {
return name;
}

publicvoidsetName(String name) {
this.name = name;
}

public StringgetJdKey() {
return jdKey;
}

publicvoidsetJdKey(String jdKey) {
this.jdKey = jdKey;
}

public StringgetTbKey() {
return tbKey;
}

publicvoidsetTbKey(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
*/

publicclass SqliteOpenHelper {
privatestatic Log log = LogFactory.getLog(SqliteOpenHelper.class);
privatestatic Dao
privatestatic Dao commodityDao;

publicstatic DaoGetCommodityDao()throws SQLException {
if (commodityDao ==null) {
commodityDao = DaoManager.createDao(GetConnectionSource(),
Commodity.class);
}
return commodityDao;
}

publicstaticvoidinit() {
try {
TableUtils.createTable(GetConnectionSource(), Commodity.class);
}catch (Exception exception) {
log.warn("创建Commodity表失败 : " + exception.getMessage());
}
}

publicstatic ConnectionSourceGetConnectionSource()throws SQLException {
String connectionString ="jdbc:sqlite:data.db";
returnnew 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)

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2012/06/30/ormlite_3/

发表评论

电子邮件地址不会被公开。