ORMLite简单使用说明

最近学习了ormlite数据库框架,将我了解到的一些简单使用方法记下来。

首先需要下载ormlite的jar包这两个放在libs下面。下载地址自己可以去找找。我等下也会在附件中一起传上来,有需要的可以下载看看。

使用前你需要自己定义一个DBHelper类继承OrmLiteSqliteOpenHelper。里面要添加一个无参构造函数和重写里面的oncreate方法。如下:

<span style="font-size:10px;">public class DBHelper extends OrmLiteSqliteOpenHelper{

	
	private Dao<Book, integer> bookDao = null;
	private Dao<Student, integer> studentDao = null;
	private Dao<BStudents, integer> bStDao = null;
	
	public DBHelper(Context context){
		super(context, "test_db", null, 1);
	}
	

	@Override
	public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
		// TODO Auto-generated method stub
		try {
			TableUtils.createTable(arg1, Book.class);
			TableUtils.createTable(arg1, Student.class);
			TableUtils.createTable(arg1, BStudents.class);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
			int arg3) {
		// TODO Auto-generated method stub		
	}</span>
oncreate中加入需要创建的表的语句。Book,Student,BStudent是我自己写的实例对象。如果想要建表的话需要自己在构建的对象上添加注释。Book表如下:

<span style="font-size:10px;">@DatabaseTable(tableName = "Book")
public class Book {
@DatabaseField(id = true,columnName = "book_id")
	int id;
@DatabaseField(columnName = "book_name")
	String name;
@DatabaseField
	int size;
//关联Student类(1对多的申明,还需在Student里面声明ForeignCollection)
@DatabaseField(foreign = true ,columnName = "student_id")
   Student student;</span>
Student表中申明如下:

<span style="font-size:10px;">@DatabaseTable(tableName = "Student")
public class Student {
	@DatabaseField(generatedId=true,columnName = "student_id")
	int id;
    @DatabaseField(columnName = "student_name")
	String name;
    @DatabaseField
	String sex;
    //回应User中的声明,表明一个Student可以对应多个User
    @ForeignCollectionField
    ForeignCollection<Book> books;<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">	</span></span>
@DatabaseTable加在类名之上,表示创建该表;(tableName = "Student")表示表名为Student,若不加tableName则表名默认与类名相同。@DatabaseField用于标识变量,对应生成数据表中的列(一定要加,不然建表的时候就不会有这列)。常见修饰属性有: id=true(申明该列为主键),generatedId=true(插入数据时主键从0开始自加1),columnName = "student_name"(列名为student_name,若不写则默认为变量名name),foreign = true ,columnName = "student_id"(申明为外键,且关联对应为student_id),throwIfNull=true(该列为非空)。
建表注释添加好后,需要初始化构建。有两种方式,一种是继承OrmLiteBaseActivity<DBHelper>(DBHelper是自己建的继承OrmLiteSqliteOpenHelper的类),使用时可以利用getHelper获取DBHelper操作对象进行数据操作,另一种是不继承OrmLiteBaseActivity而继承Activity,那则需要OpenHelperManager.getHelper(this,DBHelper.class)来初始化获得DBHelper的对象。

使用时需要先构造该表的DAO类对象才能进行相应的数据操作。例如Dao<Book, integer> bookDao = getDao(Book.class); (Dao<Book, integer>是因为Book表的主键为integer类型)。得到dao类对象后即可对该表数据进行操作。ORMLite提供了一些简单的接口可供使用:

    bookDao.create(T data)//向book表中插入一条数据

delete(T data)//删除一条数据

deleteById(ID id) //通过id删除

queryForAll()//查询表中所有数据

queryForEq(String fieldName, Object value) //通过某列的值查询

queryForId(ID id) //通过id查询

update(T data) //更新数据

           ...(更多详情请参考源码以及api文档,后面我也会贴出来)

   想要自定义查询或删除的话需要利用queryBuilder()或deleteBuilder()自己编写复杂操作。例如bookDao.deleteBuilder().delete();删除book表中的全部数据(自定义删除语句我也不太会用,实在不行可以先query出自己要删除的对象后再删除那些对象)。自定义查询则可以自己定义复杂查询,例如如下语句:

       /**
	 * 表连接查询
	 *  selece List<Student> from Student_table where student_id in
	 *  (select student_id from User_table where book_name = "2" )
	 */
	public void queryOneToMany(){
		List<Student> list =null;
		QueryBuilder<Book, integer> bookQuery = bookDao.queryBuilder();
		bookQuery.selectColumns("student_id");
		SelectArg bookArg = new SelectArg("2");
		try {
			bookQuery.where().eq("book_name", bookArg);
			QueryBuilder<Student, integer> studentQuery = studentDao.queryBuilder();
			studentQuery.where().in("student_id",bookQuery);
			list = studentQuery.query();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
    查询语句中可以利用where,and,or等方法进行精细查寻:bookD ao.queryBuilder().orderBy( "Id" true ).where().eq( "book_name" ,value).and().eq( "book_name" , value1) .query();

   这些只是表面简单操作,深入使用有待后续研究学习。

      ormlite测试demo

源码及API说明:点击下载

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值