目前Android开发很火的一个框架Xutils框架。它有四个模块:1、ViewUtils。2、HttpUtils。3、DbUtils。4、BitmapUtils。
记得是去年的差不多这个时候,我的大学老师张老师介绍我去学习Xutils框架,当时项目有很多对数据库的操作,所以刚学习Xutils的时候,首先着重学习对DbUtils模块的使用,感受到了他的好用之处。接下来为大家介绍一下Xutils框架的基本使用。
使用Xutils框架需要下载Xutils的jar包。(网上很好找,我使用的是xutils-3.3.25)
需要加入以下两个权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" />
在Application中初始化Xutils框架
x.Ext.init(this); // 初始化Xutils框架 x.isDebug(); //开启Debug模式,对app性能有一些影响
(一)、DbUtils模块
Xutils框架使用了注解的方式来方便了对数据的操作,如下:
@Table(name = "t_person") public class Person { @Column(name = "id", isId = true, autoGen = true, property = "unique") public int id; @Column(name="username") public String username; @Column(name="password") public String password; } 注意:id属性的注解设置为isId=true,就不用设置autoGen=true和property = "unique",这里只是演示有这么一个属性。设置autoGen=true可以让此字段自增,pr operty="unique"可以让该字段唯一,当然也可以设置一些其他的限制。 接下来是对数据库的操作: 1)、收下获取DaoConfig实例 private static DbManager.DaoConfig getDaoconfig(Context context) {
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig(); //获取DaoConfig daoConfig.setDbName("mydb.db"); //设置数据库名称 daoConfig.setDbVersion(1); //设置版本号 daoConfig.setDbDir(context.getDir("DATABASE", 0)); // 数据库位置为:data/data/包名/app_DATABASE daoConfig.setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { // 开启WAL, 对写入加速提升巨大 db.getDatabase().enableWriteAheadLogging(); } }); return daoConfig; } 2)、增删改查的操作 //获取DbManager DbManager manager = x.getDb(getDaoconfig(context)); //获得DbManager Person person = new Person(); person.name = "张三"; person.password = "123456"; //保存数据,调用manager的save方法直接保存对象到数据库(是不是感觉和Hibernate很像) manager.save(person); //保存或者更新数据,如果id在数据库中存在,则更新对象,不存在则添加为新的数据 manager.saveOrUpdate(person); //删除数据,会删除数据库中与person的id相同的数据 manager.delete(person); //查询数据,Xutils提供了几种查询方式,但是原理都是一样的,方便了开发人员的使用 List<Pseron> ps = manager.selector(Person.class).where("username", "=", "张三").and("password", "=", "12346").findAll();
使用wher的参数为("列名", "运算符", "值")。运算符可以是“=”、“!=”、“<”、“<=”等等,并且可以根据实际情况添加add、or等条件。 使用findAll返回的是所有符合条件的数据的List集合,泛型为当前查询的实体类。findFirst只得到查询的第一条数据。总之findAll的查询结果是一个List集合,而 findFirst的查询结果是一个对象,这个也很好理解。 如果只想查询某个列或者某几个列,可以用以下的方法: DbModel model = manager.selector(Person.class).select("username","password").findFirst(); 返回的是一个DbModel类型,它将查询到的数据已Key-Value的形式存在,如果需要得到某一列的数据,只需要model.getString("列名")、model.getInt("列名") 等就可以得到数据。
时间: 2024-10-24 23:49:30