最开始接触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"
)
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)
|