Android ORMLite 入门
为了方便项目中数据库的使用,提高开发效率 ,决定引入ORM框架。
先看看ORM是啥。。。
ORM框架
对象-关系映射(OBJECT/RELATIONALMAPPING,简称ORM),是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法[2] 。O R M 技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化[1] 。
先列出几个ORM框架:ORMLite、greendao、ormndroid、androrm、ActiveAndroid
下载ormLite jar 包
官方有详细的Android的配置的过程,只要下载core 包跟android 包。
在eclipse中新建工程文件,在文件跟目录新建libs文件夹,将下载的ormlite-android-5.0.jar ormlite-core-5.0.jar 拷贝到文件夹中。
在工程properties — Java Build Path 的 Libraries 中引入这两个jar 包。
创建Bean
新建一个包,com.example.ormlitetest.bean 用来存放项目的bean。
代码如下
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
@DatabaseTable(tableName = "tt_user") //表名
public class User {
@DatabaseField(generatedId = true) //主键ID自动生成
private int id;
@DatabaseField(columnName = "name") //表的列名
private String name;
//必须要有一个无参的构造函数
public User(){
}
public User(String name){
this.name = name;
}
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;
}
}
创建Dao
import java.sql.SQLException;
import com.example.ormlisttest.bean.User;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DatabaseHelper extends OrmLiteSqliteOpenHelper{
private static final String TABLE_NAME = "sqlite-tt.db";
private Dao<User,Integer> userDao;
private DatabaseHelper(Context context){
super(context, TABLE_NAME,null,1);
}
@Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
try{
TableUtils.createTable(arg1,User.class); //创建表
}catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2, int arg3) {
try {
TableUtils.dropTable(arg1, User.class,true);//删除表
onCreate(arg0, arg1);
} catch (Exception e) {
e.printStackTrace();
}
}
//使用单例模式获取help的实例。
private static DatabaseHelper instance;
public static synchronized DatabaseHelper getHelper(Context context){
if(instance==null){
synchronized (DatabaseHelper.class) {
if(instance==null){
instance = new DatabaseHelper(context);
}
}
}
return instance;
}
//获取User 的Dao
public Dao<User,Integer> getUserDao() throws SQLException{
if(userDao == null){
userDao = getDao(User.class);
}
return userDao;
}
@Override
public void close() {
super.close();
userDao = null;
}
}
测试一下CURD操作
public class MainActivity extends Activity {
private TextView mContent;
private User u1=new User();
private UserDao mUserDao = new UserDao(this);
DatabaseHelper helper = DatabaseHelper.getHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContent = (TextView) findViewById(R.id.tv_content);
addData();
}
private void addData() {
try {
u1 = new User("Scott1");
helper.getUserDao().create(u1);
u1 = new User("scott2");
helper.getUserDao().create(u1);
} catch (SQLException e) {
e.printStackTrace();
}
User u2 = new User() ;
try {
u2 = helper.getUserDao().queryForId(1);
Log.e("mainActivity", u2.getName());
} catch (SQLException e) {
e.printStackTrace();
}
mContent.setText(u2.getName());
}
}
对CURD的进行一个总结:
添加
helper.getUserDao().create(u1);
helper.getUserDao().createOrUpdate(u1);
helper.getUserDao().createIfNotExists(u1);
删除
helper.getUserDao().deleteById(id); 根据ID删除
helper.getUserDao().delete(user); 根据实体删除
helper.getUserDao().delete(list); 删除集合
helper.getUserDao().deleteIds(ids); 删除集合id
更新
helper.getUserDao().update(new User(1, “katty”)); 更新id指定行的数据
helper.getUserDao().updateId(new User(id, name), 100); 变更指定实体的id
查询
helper.getUserDao().queryForAll(); 返回表中所有条目
helper.getUserDao().queryForId(mId); 根据id 检索一条记录
下一篇博文会对OrmLite 进行详细的讲解。
关注我的微信公众号,每天都有优质技术文章,搞笑GIF图片推送哦。