XUtils db学习笔记(xutils 3.5.0)
来源:互联网 发布:淘宝手机端访客怎么看 编辑:程序博客网 时间:2024/06/15 17:41
目前只使用了db模块,将其他模块剔除,减小包的体积!已经修改好的包上传。下载地址,笔记基于该修改包!
1.定义vo
定义简单的一对多关系,Parent和Child。
import org.xutils.db.annotation.Column;import org.xutils.db.annotation.Table;import java.util.Date;@Table(name = "parent", onCreated = "CREATE UNIQUE INDEX index_name ON parent(name,email)")public class Parent { @Column(name = "id", isId = true,autoGen = false) private int id; @Column(name = "name") public String name; @Column(name = "email") private String email; @Column(name = "isAdmin") private boolean isAdmin; @Column(name = "time")//可以直接保存date类型参数 private Date time; @Column(name = "date")//可以直接保存date类型参数 private java.sql.Date date; //setter/getter省略 public List<Child> getChildren(DbManager db) throws DbException { return db.selector(Child.class).where("parentId", "=", this.id).findAll(); }}
import org.xutils.db.annotation.Column;import org.xutils.db.annotation.Table;@Table(name = "child")public class Child { @Column(name = "id", isId = true) private int id; @Column(name = "name") public String name; @Column(name = "email") private String email; @Column(name = "parentId"/*, property = "UNIQUE"//如果是一对一加上唯一约束*/)//此处保存parentId public long parentId; // 这个属性被忽略,不存入数据库 public String willIgnore; @Column(name = "text") private String text; //setter/getter省略}
2.初始化数据库设置
2.1 设置数据库
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig() .setDbName("test.db") // 不设置dbDir时, 默认存储在app的私有目录. .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了. .setDbVersion(2) .setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { // 开启WAL, 对写入加速提升巨大 db.getDatabase().enableWriteAheadLogging(); } }) .setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { // TODO: ... // db.addColumn(...); // db.dropTable(...); // ... // or // db.dropDb(); } });
2.2 初始化一个数据库实例
DbManager db = DbManagerImpl.getInstance(daoConfig,getApplicationContext());
注意此处是我修改的去掉其他模块的写法,若使用原生的,用 x.getDb(daoConfig);
这个方法会缓存一个db实例,重复调用不会新建一个db实例。
3 保存实例
Parent parent = new Parent(); parent.name = "测试" + System.currentTimeMillis(); parent.setAdmin(true); parent.setEmail("wyouflf@qq.com"); parent.setTime(new Date()); parent.setDate(new java.sql.Date(new Date().getTime())); //db.save(parent); db.saveBindingId(parent);//保存对象关联数据库生成的id
也可以批量保存:
parentList = new ArrayList<Parent>(); for (int i = 0; i < 1000; i++) { Parent parent = new Parent(); parent.setAdmin(true); parent.setDate(new java.sql.Date(1234)); parent.setTime(new Date()); parent.setEmail(i + "_@qq.com"); parentList.add(parent); } try { db.save(parentList); } catch (DbException ex) { ex.printStackTrace(); }
注意不会级联保存,需要手动操作!
4 查改删
4.1 查询数据
查询所有数据:
List<Child> children = db.selector(Child.class).findAll();
按条件查找:
List<Parent> list = db.selector(Parent.class) .where("id", "<", 54) .and("time", ">", calendar.getTime()) .orderBy("id") .limit(10) .offset(10 * currPage) .findAll();
4.2 更改数据
parent.name = "hahaha123";parent.setEmail("wyouflf@gmail.com");db.update(parent);db.update(parent, "name", "email");db.update(Parent.class,WhereBuilder.b("id", "=", 1).and("isAdmin", "=", true), new KeyValue("name", "test_name"), new KeyValue("isAdmin", false));
delete类似,有4个方法重载,可以根据id删除或对象、条件删除,不在赘述!
阅读全文
0 0
- XUtils db学习笔记(xutils 3.5.0)
- xutils学习(1)
- Xutils笔记
- xUtils使用-----db模块
- xUtils
- XUtils
- xUtils
- XUtils
- xUtils
- xUtils
- XUtils
- xutils
- xUtils
- xUtils
- XUtils
- xUtils
- xutils
- XUtils
- python super用法
- freemaker 初探
- Miller-Rabin素性测试算法详解
- .Net Core应用搭建的分布式邮件系统设计
- ireport+springMVC合并报表实例
- XUtils db学习笔记(xutils 3.5.0)
- matlab中的eig函数
- 递推关系( Recurrences, UVa 10870)(矩阵快速幂)
- 1752:鸡兔同笼(无语...)
- webapi
- Kotlin 如何去查找控件并使用
- hdu 1063 java版 精度幂
- java 将文件打成zip压缩包
- 体验node Koa2中的封装