当前位置:Gxlcms > 数据库问题 > Xutils3-Dbutils

Xutils3-Dbutils

时间:2021-07-01 10:21:17 帮助过:7人阅读

android.view.View; import android.widget.TextView; import org.xutils.DbManager; import org.xutils.common.util.KeyValue; import org.xutils.db.sqlite.WhereBuilder; import org.xutils.db.table.DbModel; import org.xutils.ex.DbException; import org.xutils.sample.db.Child; import org.xutils.sample.db.Parent; import org.xutils.view.annotation.ContentView; import org.xutils.view.annotation.Event; import org.xutils.view.annotation.ViewInject; import org.xutils.x; import java.io.File; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * Created by wyouflf on 15/11/4. */ @ContentView(R.layout.fragment_db) public class DbFragment extends BaseFragment { 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(); } }); @ViewInject(R.id.tv_db_result) private TextView tv_db_result; @Event(R.id.btn_test_db) private void onTestDbClick(View view) { // 一对多: (本示例的代码) // 自己在多的一方(child)保存另一方的(parentId), 查找的时候用parentId查parent或child. // 一对一: // 在任何一边保存另一边的Id并加上唯一属性: @Column(name = "parentId", property = "UNIQUE") // 多对多: // 再建一个关联表, 保存两边的id. 查询分两步: 先查关联表得到id, 再查对应表的属性. String temp = ""; try { DbManager db = x.getDb(daoConfig); Child child = new Child(); child.setName("child‘s name"); Parent test = db.selector(Parent.class).where("id", "in", new int[]{1, 3, 6}).findFirst(); // long count = db.selector(Parent.class).where("id", "in", new int[]{1, 3, 6}).count(); // Parent test = db.selector(Parent.class).where("id", "between", new String[]{"1", "5"}).findFirst(); if (test != null) { child.setParentId(test.getId()); temp += "first parent:" + test + "\n"; tv_db_result.setText(temp); } 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); db.saveBindingId(child);//保存对象关联数据库生成的id List<Child> children = db.selector(Child.class).findAll(); temp += "children size:" + children.size() + "\n"; tv_db_result.setText(temp); if (children.size() > 0) { temp += "last children:" + children.get(children.size() - 1) + "\n"; tv_db_result.setText(temp); } Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -1); calendar.add(Calendar.HOUR, 3); List<Parent> list = db.selector(Parent.class) .where("id", "<", 54) .and("time", ">", calendar.getTime()) .orderBy("id") .limit(10).findAll(); temp += "find parent size:" + list.size() + "\n"; tv_db_result.setText(temp); if (list.size() > 0) { temp += "last parent:" + list.get(list.size() - 1) + "\n"; tv_db_result.setText(temp); } // test update 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)); Parent entity = child.getParent(db); temp += "find by id:" + entity.toString() + "\n"; tv_db_result.setText(temp); List<DbModel> dbModels = db.selector(Parent.class) .groupBy("name") .select("name", "count(name) as count").findAll(); temp += "group by result:" + dbModels.get(0).getDataMap() + "\n"; tv_db_result.setText(temp); } catch (Throwable e) { temp += "error :" + e.getMessage() + "\n"; tv_db_result.setText(temp); } } @Event(R.id.btn_test_db2) private void onTestDb2Click(View view) { tv_db_result.setText("wait..."); x.task().run(new Runnable() { // 异步执行 @Override public void run() { DbManager db = x.getDb(daoConfig); String result = ""; List<Parent> 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); } long start = System.currentTimeMillis(); for (Parent parent : parentList) { try { db.save(parent); } catch (DbException ex) { ex.printStackTrace(); } } result += "插入1000条数据:" + (System.currentTimeMillis() - start) + "ms\n"; start = System.currentTimeMillis(); try { parentList = db.selector(Parent.class).orderBy("id", true).limit(1000).findAll(); } catch (DbException ex) { ex.printStackTrace(); } result += "查找1000条数据:" + (System.currentTimeMillis() - start) + "ms\n"; start = System.currentTimeMillis(); try { db.delete(parentList); } catch (DbException ex) { ex.printStackTrace(); } result += "删除1000条数据:" + (System.currentTimeMillis() - start) + "ms\n"; // 批量插入 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); } start = System.currentTimeMillis(); try { db.save(parentList); } catch (DbException ex) { ex.printStackTrace(); } result += "批量插入1000条数据:" + (System.currentTimeMillis() - start) + "ms\n"; try { parentList = db.selector(Parent.class).orderBy("id", true).limit(1000).findAll(); db.delete(parentList); } catch (DbException ex) { ex.printStackTrace(); } final String finalResult = result; x.task().post(new Runnable() { // UI同步执行 @Override public void run() { tv_db_result.setText(finalResult); } }); } }); } }

 

  1. <span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.DbManager;
  2. </span><span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.db.annotation.Column;
  3. </span><span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.db.annotation.Table;
  4. </span><span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.ex.DbException;
  5. </span><span style="color: #008000">/**</span><span style="color: #008000">
  6. * Author: wyouflf
  7. * Date: 13-7-29
  8. * Time: 下午5:04
  9. </span><span style="color: #008000">*/</span><span style="color: #000000">
  10. @Table(name </span>= "child"<span style="color: #000000">)
  11. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Child {
  12. @Column(name </span>= "id", isId = <span style="color: #0000ff">true</span><span style="color: #000000">)
  13. </span><span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span><span style="color: #000000"> id;
  14. @Column(name </span>= "name"<span style="color: #000000">)
  15. </span><span style="color: #0000ff">private</span><span style="color: #000000"> String name;
  16. @Column(name </span>= "email"<span style="color: #000000">)
  17. </span><span style="color: #0000ff">private</span><span style="color: #000000"> String email;
  18. @Column(name </span>= "parentId" <span style="color: #008000">/*</span><span style="color: #008000">, property = "UNIQUE"//如果是一对一加上唯一约束</span><span style="color: #008000">*/</span><span style="color: #000000">)
  19. </span><span style="color: #0000ff">private</span> <span style="color: #0000ff">long</span> parentId; <span style="color: #008000">//</span><span style="color: #008000"> 外键表id
  20. </span><span style="color: #008000">//</span><span style="color: #008000"> 这个属性被忽略,不存入数据库</span>
  21. <span style="color: #0000ff">private</span><span style="color: #000000"> String willIgnore;
  22. @Column(name </span>= "text"<span style="color: #000000">)
  23. </span><span style="color: #0000ff">private</span><span style="color: #000000"> String text;
  24. </span><span style="color: #0000ff">public</span> Parent getParent(DbManager db) <span style="color: #0000ff">throws</span><span style="color: #000000"> DbException {
  25. </span><span style="color: #0000ff">return</span> db.findById(Parent.<span style="color: #0000ff">class</span><span style="color: #000000">, parentId);
  26. }
  27. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">long</span><span style="color: #000000"> getParentId() {
  28. </span><span style="color: #0000ff">return</span><span style="color: #000000"> parentId;
  29. }
  30. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setParentId(<span style="color: #0000ff">long</span><span style="color: #000000"> parentId) {
  31. </span><span style="color: #0000ff">this</span>.parentId =<span style="color: #000000"> parentId;
  32. }
  33. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> getId() {
  34. </span><span style="color: #0000ff">return</span><span style="color: #000000"> id;
  35. }
  36. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setId(<span style="color: #0000ff">int</span><span style="color: #000000"> id) {
  37. </span><span style="color: #0000ff">this</span>.id =<span style="color: #000000"> id;
  38. }
  39. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getName() {
  40. </span><span style="color: #0000ff">return</span><span style="color: #000000"> name;
  41. }
  42. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setName(String name) {
  43. </span><span style="color: #0000ff">this</span>.name =<span style="color: #000000"> name;
  44. }
  45. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getEmail() {
  46. </span><span style="color: #0000ff">return</span><span style="color: #000000"> email;
  47. }
  48. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setEmail(String email) {
  49. </span><span style="color: #0000ff">this</span>.email =<span style="color: #000000"> email;
  50. }
  51. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getWillIgnore() {
  52. </span><span style="color: #0000ff">return</span><span style="color: #000000"> willIgnore;
  53. }
  54. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setWillIgnore(String willIgnore) {
  55. </span><span style="color: #0000ff">this</span>.willIgnore =<span style="color: #000000"> willIgnore;
  56. }
  57. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getText() {
  58. </span><span style="color: #0000ff">return</span><span style="color: #000000"> text;
  59. }
  60. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setText(String text) {
  61. </span><span style="color: #0000ff">this</span>.text =<span style="color: #000000"> text;
  62. }
  63. @Override
  64. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String toString() {
  65. </span><span style="color: #0000ff">return</span> "Child{" +
  66. "id=" + id +
  67. ", name=‘" + name + ‘\‘‘ +
  68. ", email=‘" + email + ‘\‘‘ +
  69. ", parentId=" + parentId +
  70. ", willIgnore=‘" + willIgnore + ‘\‘‘ +
  71. ", text=‘" + text + ‘\‘‘ +
  72. ‘}‘<span style="color: #000000">;
  73. }
  74. }</span>
  1. <span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.DbManager;
  2. </span><span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.db.annotation.Column;
  3. </span><span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.db.annotation.Table;
  4. </span><span style="color: #0000ff">import</span><span style="color: #000000"> org.xutils.ex.DbException;
  5. </span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Date;
  6. </span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.List;
  7. </span><span style="color: #008000">/**</span><span style="color: #008000">
  8. * Author: wyouflf
  9. * Date: 13-7-25
  10. * Time: 下午7:06
  11. </span><span style="color: #008000">*/</span><span style="color: #000000">
  12. @Table(name </span>= "parent", onCreated = "CREATE UNIQUE INDEX index_name ON parent(name,email)"<span style="color: #000000">)
  13. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Parent {
  14. @Column(name </span>= "id", isId = <span style="color: #0000ff">true</span><span style="color: #000000">)
  15. </span><span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span><span style="color: #000000"> id;
  16. @Column(name </span>= "name"<span style="color: #000000">)
  17. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String name;
  18. @Column(name </span>= "email"<span style="color: #000000">)
  19. </span><span style="color: #0000ff">private</span><span style="color: #000000"> String email;
  20. @Column(name </span>= "isAdmin"<span style="color: #000000">)
  21. </span><span style="color: #0000ff">private</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> isAdmin;
  22. @Column(name </span>= "time"<span style="color: #000000">)
  23. </span><span style="color: #0000ff">private</span><span style="color: #000000"> Date time;
  24. @Column(name </span>= "date"<span style="color: #000000">)
  25. </span><span style="color: #0000ff">private</span><span style="color: #000000"> java.sql.Date date;
  26. </span><span style="color: #0000ff">public</span> List<Child> getChildren(DbManager db) <span style="color: #0000ff">throws</span><span style="color: #000000"> DbException {
  27. </span><span style="color: #0000ff">return</span> db.selector(Child.<span style="color: #0000ff">class</span>).where("parentId", "=", <span style="color: #0000ff">this</span><span style="color: #000000">.id).findAll();
  28. }
  29. </span><span style="color: #008000">//</span><span style="color: #008000"> 一对一
  30. </span><span style="color: #008000">//</span><span style="color: #008000">public Child getChild(DbManager db) throws DbException {
  31. </span><span style="color: #008000">//</span><span style="color: #008000"> return db.selector(Child.class).where("parentId", "=", this.id).findFirst();
  32. </span><span style="color: #008000">//</span><span style="color: #008000">}</span>
  33. <span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> getId() {
  34. </span><span style="color: #0000ff">return</span><span style="color: #000000"> id;
  35. }
  36. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setId(<span style="color: #0000ff">int</span><span style="color: #000000"> id) {
  37. </span><span style="color: #0000ff">this</span>.id =<span style="color: #000000"> id;
  38. }
  39. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> isAdmin() {
  40. </span><span style="color: #0000ff">return</span><span style="color: #000000"> isAdmin;
  41. }
  42. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setAdmin(<span style="color: #0000ff">boolean</span><span style="color: #000000"> admin) {
  43. isAdmin </span>=<span style="color: #000000"> admin;
  44. }
  45. </span><span style="color: #0000ff">public</span><span style="color: #000000"> Date getTime() {
  46. </span><span style="color: #0000ff">return</span><span style="color: #000000"> time;
  47. }
  48. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setTime(Date time) {
  49. </span><span style="color: #0000ff">this</span>.time =<span style="color: #000000"> time;
  50. }
  51. </span><span style="color: #0000ff">public</span><span style="color: #000000"> java.sql.Date getDate() {
  52. </span><span style="color: #0000ff">return</span><span style="color: #000000"> date;
  53. }
  54. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setDate(java.sql.Date date) {
  55. </span><span style="color: #0000ff">this</span>.date =<span style="color: #000000"> date;
  56. }
  57. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getEmail() {
  58. </span><span style="color: #0000ff">return</span><span style="color: #000000"> email;
  59. }
  60. </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setEmail(String email) {
  61. </span><span style="color: #0000ff">this</span>.email =<span style="color: #000000"> email;
  62. }
  63. @Override
  64. </span><span style="color: #0000ff">public</span><span style="color: #000000"> String toString() {
  65. </span><span style="color: #0000ff">return</span> "Parent{" +
  66. "id=" + id +
  67. ", name=‘" + name + ‘\‘‘ +
  68. ", email=‘" + email + ‘\‘‘ +
  69. ", isAdmin=" + isAdmin +
  70. ", time=" + time +
  71. ", date=" + date +
  72. ‘}‘<span style="color: #000000">;
  73. }
  74. }</span>

 

Xutils3-Dbutils

标签:private   db2   保存   models   time   last   tostring   一加   let   

人气教程排行