关于androidORMLite的一些总结
ORMLite是一种对象关系映射(Object-Relational Mapping, 简称ORM)工具,可用于读写数据。ORMLite是一个框架,更佳方便对多数据进行操作,特别是对于那些对SQL语句不熟悉的人
使用:
- 下载 ORMLite Jar
首先去ORMLite官网下载jar包,对于Android为:ormlite-android-4.48.jar
和ormlite-core-4.48.jar
; - 创建Bean
User.java
/*
* 当定义表时,第一个建议便是使用final变量定义数据库表名和列名,
* 该方法可以简化代码的维护工作,不过本例并没用使用*/
@DatabaseTable(tableName = "tb_user") //@DatabaseTable:标明这是数据库的一张表
public class User {/*@DatabaseField:标明这是表中的字段columnName: 为该字段在数据中的列名generatedId:表示id为自增长*/@DatabaseField(generatedId = true)private int id;@DatabaseField(columnName = "name")private String name;@DatabaseField(columnName = "desc")private String desc;/*ORMLite需要用到无参构造方法* 当ORMLite需要创建User类时会使用到无参数的构造方法,* 并通过反射机制设置成员变量,也可以使用setter方法设置成员变量*/public User() {}public User(String name, String desc) {this.name = name;this.desc = desc;}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 getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}
- 创建数据库
原生的数据库操作,需要继承SQLiteOpenHelper,这里我们需要继承OrmLiteSqliteOpenHelper -
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {//数据库文件的名称private static final String TABLE_NAME = "sqlit-test.db";/*userDao , 每张表对应一个*/private Dao<User, Integer> userDao;private DatabaseHelper(Context context) {super(context, TABLE_NAME, null, 2);}@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase,ConnectionSource connectionSource) {try{//创建表createTable(connectionSource, User.class);}catch (SQLException e){e.printStackTrace();}}@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase,ConnectionSource connectionSource, int i, int i1) {try{dropTable(connectionSource, User.class, true);onCreate(sqLiteDatabase, connectionSource);}catch (SQLException e){e.printStackTrace();}}private static DatabaseHelper instance;/** 单例获取该Helper*/public static synchronized DatabaseHelper getHelper(Context context) {if (instance == null){synchronized (DatabaseHelper.class){if (instance == null){instance = new DatabaseHelper(context);}}}return instance;}/** 获得userDao*/public Dao<User, Integer> getUserDao() throws SQLException {if (userDao == null){userDao = getDao(User.class);}return userDao;}/** 释放资源*/public void close(){super.close();userDao=null;} }
这里我们需要继承OrmLiteSqliteOpenHelper,其实就是间接继承了SQLiteOpenHelper
然后需要实现两个方法:
onCreate(SQLiteDatabase database,ConnectionSource connectionSource)
创建表,我们直接使用ORMLite提供的TableUtils.createTable(connectionSource, User.class)
;进行创建
onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion)
-
数据库的增删改查
//增加数据public void testAddUser(){User u1 = new User("zhy", "2B青年");DatabaseHelper helper = DatabaseHelper.getHelper(getContext());try{helper.getUserDao().create(u1);u1 = new User("zhy2", "2B青年");helper.getUserDao().create(u1);u1 = new User("zhy3", "2B青年");helper.getUserDao().create(u1);u1 = new User("zhy4", "2B青年");helper.getUserDao().create(u1);u1 = new User("zhy5", "2B青年");helper.getUserDao().create(u1);u1 = new User("zhy6", "2B青年");helper.getUserDao().create(u1);testList();}catch (SQLException e){e.printStackTrace();}}//删除数据public void testDeleteUser(){DatabaseHelper helper = DatabaseHelper.getHelper(getContext());try{helper.getUserDao().deleteById(2);}catch (SQLException e){e.printStackTrace();}}//更新数据public void testUpdateUser(){DatabaseHelper helper = DatabaseHelper.getHelper(getContext());try{User u1 = new User("zhy-android", "2B青年");u1.setId(3);helper.getUserDao().update(u1);}catch (SQLException e){e.printStackTrace();}}//查询数据public void testList(){DatabaseHelper helper = DatabaseHelper.getHelper(getContext());try {User u1 = new User("zhy-android", "2B青年");u1.setId(2);List<User> users = helper.getUserDao().queryForAll();Log.e("TAG", users.toString());}catch (SQLException e){e.printStackTrace();}}
更多推荐
关于androidORMLite的一些总结
发布评论