本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
简介
最开始接触ormlite是在android的开发中,ormlite的简单便利让我印象深刻。
这几天在研究顾客购物行为,需要使用到数据库,但是对于数据库的速度什么的要求不大,我首先想到的是Ormlite+Sqlite。
实体类
ormlite的官网http://ormlite.com/,最新版本4.41
因为是在一般java环境中使用,所以不需要那个android包。
引入包以后建立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)
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯