xUtils使用-----db模块
来源:互联网 发布:恐同即深柜 知乎 编辑:程序博客网 时间:2024/06/14 05:31
xUtils是一个不错的快速开发框架,开发群气氛也非常活跃,项目地址,推荐使用LogUtils,DbUtils和HttpUtils,本文着重介绍DbUtils使用。
使用DbUtils类时只要记住一个类对应一张表即可,同时别忘为应用加上读写sd卡权限。
1、初始化配置DbUtils
使用很简单,看代码即可
// DbUtils.create(this),提供了不同的重载方法DbUtils dbUtils = DbUtils.create(this, Environment.getExternalStorageDirectory().getPath(), "people.db"); dbUtils.configDebug(true);//打印sql语句
2、创建简单Java类
注意一张表对应一个类,这里以简单的Parents与Child为例简单的介绍下。
Parents.java:
import com.lidroid.xutils.db.annotation.Column;import com.lidroid.xutils.db.annotation.Finder;import com.lidroid.xutils.db.annotation.Id;import com.lidroid.xutils.db.annotation.NoAutoIncrement;import com.lidroid.xutils.db.annotation.Table;import com.lidroid.xutils.db.sqlite.FinderLazyLoader;@Table(name="parent")//可以不加,加上避免混淆错误,也可以在混淆时选择不混淆该类public class Parents {@Id//注释可以不加,加上只是增强可读性,避免混淆错误@NoAutoIncrement//若主键为int 或long则为自增长,若不需要添加此选项private int id ;//必须存在id@Column(column="ADDRESS")//可以不写,则创建的表中列名就是addressprivate String address ;@Finder(valueColumn="id",targetColumn="parentId")public FinderLazyLoader<Child> children ;public Parents() {super();}public Parents(int id, String address) {super();this.id = id;this.address = address;}//setter/getter方法省略}Child.java
import com.lidroid.xutils.db.annotation.Foreign;import com.lidroid.xutils.db.annotation.Transient;public class Child {@Transient//加上它表示该字段不会入库,同时静态字段也不会入库private String score ;private String name ;private String email ;private int id ;@Foreign(column="parentId",foreign="id")public Parents parent ;public Child(String name, String email) {super();this.name = name;this.email = email;}public Child() {super();}<pre name="code" class="java" style="font-size: 14px;">//setter/getter方法省略}
3.CRUD操作
3.1增加
Parents parent = new Parents(1, "zhengzhou"); Child c1 = new Child("张三", "hha@126.com"); Child c2 = new Child("李四", "lisi@126.com"); Child c3 = new Child("lucy", "lucy@126.com"); c1.setParent(parent); c2.setParent(parent); c3.setParent(parent); try { //dbUtils.saveBindingId(c1) ;//会将id值赋给bean dbUtils.save(c1); dbUtils.save(c2); dbUtils.save(c3); dbUtils.save(parent); } catch (DbException e) { }也可以直接保存List集合dbUtils.saveAll(List<?>)/dbUtils.saveBindingIdAll(List<?>)。
3.2修改与查询
try {List<Child> children = dbUtils.findAll(Child.class);if (children != null && children.size() > 0) {for (Child c : children) {c.setName(c.getName() + "修改");}}dbUtils.updateAll(children, "name");//再次查询所有的ChildList<Child> cs = dbUtils.findAll(Child.class);if (children != null && children.size() > 0) {for (Child c : cs) {System.out.println(c.getName());}}} catch (DbException e) {}由父类查找其下的所有子类 :
List<Child> c;try {c = p.children.getAllFromDb();System.out.println(c.size());} catch (DbException e) {e.printStackTrace();}
注意其同时提供了saveOrUpdate()方法方便操作。
3.3、删除操作
DbUtil删除数据很简单,提供了以下方法:
try {dbUtils.deleteAll(Child.class);dbUtils.delete(child);dbUtils.deleteById(Child.class, 1);dbUtils.dropDb();//删除整张表,慎用dbUtils.dropTable(Child.class);} catch (DbException e) {e.printStackTrace();}
3.4、查询操作
主要提供了findAll()、findById()、findFirst()以及execQuery()(有execNonQuery()执行非查询的sql操作)。下面主要介绍下条件查询与分页操作。
try {List<Child> findChild = dbUtils.findAll(Selector.from(Child.class).where("id", "<", "3")//执行至此处相当于WHERE id<54 AND (age>20 OR age<30).and(WhereBuilder.b("score", ">", "70").or("age", "<", "10"))// op为"in"或"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等).where("id", "in", new int[]{1, 2, 3}).orderBy("id") .limit(pageSize) .offset(pageSize * pageIndex)) ;} catch (DbException e) {e.printStackTrace();}也可以“按需”取出:
try {//只取出name列和count数值List<DbModel> dbModel = dbUtils.findDbModelAll(Selector.from(Parents.class).select("name", "count(name)"));dbModel.get(0).getString("name") ;dbModel.get(0).getInt("count(name)") ;} catch (DbException e) {}
0 0
- xUtils使用-----db模块
- xutils 四大模块的使用
- android sql XUtils DB模块的性能研究
- android xutils 四大模块的使用
- xUtils中BitmapUtils模块的使用实例
- xutils网络模块bug
- xUtils -- view模块分析
- XUtils的bitmap模块
- XUtils的view模块
- xutils的http模块
- xUtils使用
- xutils使用
- xutils使用
- Xutils使用
- xUtils 使用
- XUtils使用
- XUtils使用
- XUtils使用
- android 自定义键盘的实现
- MFC 中L 和 _T() 宏
- 推荐产品经理必读书单
- 解决MySQL中文乱码
- phpmailer
- xUtils使用-----db模块
- USER32!__ClientLoadLibrary定位
- HOG:从理论到OpenCV实践
- EQueue - 详细谈一下消息持久化以及消息堆积的设计
- (4.1.22.1)Android 自定义 ViewPager 打造千变万化的图片切换效果
- java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;
- DDMS files not found: D:\andriod\android-sdk-windows\platform-tools\hprof-conv.exe
- Dubbo demo 初体验资料参考及下载(1)
- Linux 串口编程