添加依赖:
compile 'com.j256.ormlite:ormlite-android:5.0'
使用
常用注解:
@DatabaseTable(tableName = "t_user") //指定实体和表的一一对应关系
@DatabaseField() //指定属性和表中的列的一一对应关系
常用配置说明:
主键: id = true
自增主键: generateId = true
是否为空: canBeNull = false
列明:columnName = “name"
外键:forein = true
示例:
@DatabaseTable(tableName = "t_address")
public class AddressBean {
@DatabaseField(id = true)
private int _id;
@DatabaseField(canBeNull = false)
private String goodsAddress;
@DatabaseField(canBeNull = false)
private String village;
@DatabaseField(canBeNull = false,foreign = true,columnName = "user_id",foreignColumnName = "_id")
private UserBean user;
}
@DatabaseTable(tableName = "t_user")
public class UserBean {
@DatabaseField(id = true)
private int _id;
@ForeignCollectionField(eager = true)
private ForeignCollection<AddressBean> addressList;
}
DBHelper管理
与原生DBHelper相同,主要负责数据库的创建和表的维护。需要继承OrmLiteSqliteOpenHelper类。
使用工具:TableUtils完成表的相关操作,如创建、清空、删除
示例:
public class DBHelp extends OrmLiteSqliteOpenHelper{ public DBHelp(Context context, String databaseName, SQLiteDatabase.CursorFactory factory, int databaseVersion) { super(context, databaseName, factory, databaseVersion); } @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, UserBean.class); TableUtils.createTable(connectionSource, AddressBean.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { } }
测试:(注意上下文Context的获取)
InstrumentationRegistry.getTargetContext()
@Test public void testDBHelp() { DBHelp dbHelp = new DBHelp(InstrumentationRegistry.getTargetContext(), "take.db", null, 1); dbHelp.getWritableDatabase(); } @Test public void testCreateUserTable() throws SQLException { DBHelp dbHelp = new DBHelp(InstrumentationRegistry.getTargetContext(), "take.db", null, 1); Dao<UserBean, Integer> dao = dbHelp.getDao(UserBean.class); UserBean userBean1 = new UserBean(); userBean1.setId(1); userBean1.setName("张三"); dao.create(userBean1); UserBean userBean2 = new UserBean(); userBean2.setId(2); userBean2.setName("李四"); dao.create(userBean2); } @Test public void testCreateAddressTable() throws SQLException { DBHelp dbHelp = new DBHelp(InstrumentationRegistry.getTargetContext(), "take.db", null, 1); Dao<AddressBean, Integer> dao = dbHelp.getDao(AddressBean.class); UserBean userBean = new UserBean(); userBean.setId(2); userBean.setName("李四"); for (int i = 0; i < 10; i++) { AddressBean addressBean = new AddressBean(); addressBean.setId(i); addressBean.setGoodsAddress("商品地址"+i); addressBean.setHome("收货地址"+i); addressBean.setUser(userBean); dao.create(addressBean); } }