Search in sources :

Example 1 with Parent

use of org.xutils.sample.db.Parent in project xUtils3 by wyouflf.

the class DbFragment method onTestDbClick.

@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();
        // 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);
        //保存对象关联数据库生成的id
        db.saveBindingId(child);
        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);
    }
}
Also used : KeyValue(org.xutils.common.util.KeyValue) Parent(org.xutils.sample.db.Parent) Calendar(java.util.Calendar) DbManager(org.xutils.DbManager) Date(java.util.Date) DbModel(org.xutils.db.table.DbModel) Child(org.xutils.sample.db.Child) Event(org.xutils.view.annotation.Event)

Example 2 with Parent

use of org.xutils.sample.db.Parent in project xUtils3 by wyouflf.

the class DbFragment method onTestDb2Click.

@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 // UI同步执行
            Runnable() {

                @Override
                public void run() {
                    tv_db_result.setText(finalResult);
                }
            });
        }
    });
}
Also used : Parent(org.xutils.sample.db.Parent) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) DbManager(org.xutils.DbManager) Date(java.util.Date) DbException(org.xutils.ex.DbException) Event(org.xutils.view.annotation.Event)

Aggregations

Date (java.util.Date)2 DbManager (org.xutils.DbManager)2 Parent (org.xutils.sample.db.Parent)2 Event (org.xutils.view.annotation.Event)2 ArrayList (java.util.ArrayList)1 Calendar (java.util.Calendar)1 List (java.util.List)1 KeyValue (org.xutils.common.util.KeyValue)1 DbModel (org.xutils.db.table.DbModel)1 DbException (org.xutils.ex.DbException)1 Child (org.xutils.sample.db.Child)1