最近在树莓派上部署了一套数据抓取工具,需要将抓取的数据录入到MySQL,特意找了下一些轻量级的ORM框架,这里简单介绍下DbUtils和OrmLite的配置和使用。
1. DbUtils
Apache旗下的,速度与稳定性不言而喻,但其配置还是有点啰嗦,依赖dbcp连接池。
地址:http://commons.apache.org/proper/commons-dbutils/
添加pom依赖:
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
添加dbcp.properties配置文件,放在classpath中:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.91.128:3306/db
username=steven
password=steven
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
#附带连接属性
connectionProperties=useUnicode=true;characterEncoding=utf8
#自动提交(auto-commit)
defaultAutoCommit=true
#只读(read-only)
defaultReadOnly=
#事务级别(TransactionIsolation)
defaultTransactionIsolation=READ_COMMITTED
新增JdbcUtil.java来加载属性文件
package com.dorole.utils;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import com.mysql.jdbc.Connection;
public class JdbcUtil {
private static DataSource ds;
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
static {
try {
Properties prop = new Properties();
InputStream in = JdbcUtil.class.getClassLoader()
.getResourceAsStream("dbcp.properties");
prop.load(in);
ds = BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
public static DataSource getDataSource() {
return ds;
}
public static Connection getConnection() throws SQLException {
try {
Connection conn = tl.get();
if (conn == null) {
conn = (Connection) ds.getConnection();
tl.set(conn);
}
return conn;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
插入数据:
QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
String sql = "INSERT INTO `orders` (`storeName`, `telecomNumber`) VALUES (?, ?)";
Object params[] = { order.getStoreName(), order.getTelecomNumber(), };
try {
runner.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}
2. OrmLite
这个在Android上用的比较多,结合轻量级的数据库HSQLDB,非常适合嵌入式设备,但这里我们使用MySQL做演示,有意思的是连BaseDao都给封装好了,配置简单,易于使用。
地址:http://ormlite.com/
添加pom依赖:
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-jdbc</artifactId>
<version>4.9</version>
</dependency>
新增OrderDao接口,默认的增删改查已经有了,故可以留空:
package com.dorole.dao;
import com.dorole.model.Order;
import com.j256.ormlite.dao.Dao;
public interface OrderDao extends Dao<Order, Integer> {
}
新增OrderDaoImpl实现类
package com.dorole.dao.impl;
import java.sql.SQLException;
import com.dorole.dao.OrderDao;
import com.dorole.model.Order;
import com.j256.ormlite.dao.BaseDaoImpl;
import com.j256.ormlite.support.ConnectionSource;
public class OrderDaoImpl extends BaseDaoImpl<Order, Integer> implements
OrderDao {
public OrderDaoImpl(ConnectionSource connectionSource,
Class<Order> dataClass) throws SQLException {
super(connectionSource, dataClass);
}
}
初始化:
OrderDao orderDao = null;
ConnectionSource connectionSource;
try {
connectionSource = new JdbcConnectionSource(
"jdbc:mysql://192.168.91.128:3306/db");
((JdbcConnectionSource) connectionSource).setUsername("steven");
((JdbcConnectionSource) connectionSource).setPassword("steven");
orderDao = new OrderDaoImpl(connectionSource, Order.class);
} catch (SQLException e) {
e.printStackTrace();
}
插入数据:
try {
Order order = new Order();
orderDao.create(order);
} catch (SQLException e) {
e.printStackTrace();
}