android Xutils dbutils 注解

xUtils DbUtils 关于实体类注解 汇总

RockyZhang 发布于 1年前,共有 0 条评论

先来官方demo

DbUtils db = DbUtils.create(this);
    	User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
    	user.setEmail("[email protected]");
    	user.setName("wyouflf");
    	db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值

    	...
    	// 查找
    	Parent entity = db.findById(Parent.class, parent.getId());
    	List<Parent> list = db.findAll(Parent.class);//通过类型查找

    	Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));

    	// IS NULL
    	Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
    	// IS NOT NULL
    	Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));

    	// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
    	List<Parent> list = db.findAll(Selector.from(Parent.class)
    	                                   .where("id" ,"<", 54)
    	                                   .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30))
    	                                   .orderBy("id")
    	                                   .limit(pageSize)
    	                                   .offset(pageSize * pageIndex));

    	// op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
    	Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
    	// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
    	Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));

    	DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列
    	List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
    	...

    	List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询
    	db.execNonQuery(sql) // 执行自定义sql
    	...

注解总结

1 .主键

    @Id // 如果主键没有命名名为id或_id的时,需要为主键添加此注解
    @NoAutoIncrement // int,long类型的id默认自增,不想使用自增时添加此注解
    private int id;

2. 忽略字段

  // Transient使这个列被忽略,不存入数据库
    @Transient
    public String willIgnore;
    /** ---------------------------------*/
    public static String staticFieldWillIgnore; // 静态字段也不会存入数据库

3.表名

@Table(name = "parent", execAfterTableCreated = "CREATE UNIQUE INDEX index_name ON parent(name,email)") 
//name即表名, 
//execAfterTableCreated  自定义表创建之后要执行的sql。为parent表创建(name,email)索引 -->在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

4.列名

@Column(column = "name") //为列名加上注解 可以针对命名不统一和防止混淆
public String name;

5.外键

  延迟加载

    @Finder(valueColumn = "id", targetColumn = "parentId")
    public FinderLazyLoader<Child> children; // 关联对象多时建议使用这种方式,延迟加载效率较高。
    
    @Foreign(column = "parentId", foreign = "id")
    public ForeignLazyLoader<Parent> parent;

非延迟加载

    @Finder(valueColumn = "id",targetColumn = "parentId")
    public Child children;
    
    @Foreign(column = "parentId", foreign = "isVIP")
    public List<Parent> parent;

1对多

    @Finder(valueColumn = "id", targetColumn = "parentId")
    private List<Child> children;
    
    @Foreign(column = "parentId", foreign = "id")
    public Parent parent;

代码

        Parent parent = new Parent();
        parent.name = "测试" + System.currentTimeMillis();
        parent.setAdmin(true);
        parent.setEmail("[email protected]");
        
        DbUtils db = DbUtils.create(this.getActivity());
        db.configAllowTransaction(true);
        db.configDebug(true);

        Child child = new Child();
        child.name = "child‘ name";
        child.parent = parent;
        db.saveBindingId(child);//保存对象关联数据库生成的id

6.其他

    @NotNull  //不能为空
    @Check(value = "age>0") //age必须大于0  创建表时调用"
    @Unique    //唯一
    public int age;
时间: 2024-10-13 09:08:38

android Xutils dbutils 注解的相关文章

Android 最火框架XUtils之注解机制具体解释

在上一篇文章Android 最火的高速开发框架XUtils中简介了xUtils的基本用法,这篇文章说一下xUtils里面的注解原理. 先来看一下xUtils里面demo的代码: @ViewInject(R.id.tabhost) private FragmentTabHost mTabHost; @ViewInject(R.id.big_img) private ImageView bigImage; 可能好多人一看就说这是个what,事实上这是Java core里面的内容,做JavaEE的应该

Android 最火的快速开发框架XUtils之注解机制详解

在上一篇文章Android 最火的快速开发框架XUtils中简单介绍了xUtils的基本使用方法,这篇文章说一下xUtils里面的注解原理. 先来看一下xUtils里面demo的代码: @ViewInject(R.id.tabhost) private FragmentTabHost mTabHost; @ViewInject(R.id.big_img) private ImageView bigImage; 可能好多人一看就说这是个what,其实这是Java core里面的内容,做JavaEE

Android Xutils 框架

Android Xutils 框架 (转) 目录(?)[-] xUtils简介 目前xUtils主要有四大模块 使用xUtils快速开发框架需要有以下权限 混淆时注意事项 DbUtils使用方法 ViewUtils使用方法 HttpUtils使用方法 普通get方法 使用HttpUtils上传文件 或者 提交数据 到服务器post方法 使用HttpUtils下载文件 BitmapUtils 使用方法 其他更多示例代码见sample文件夹中的代码 输出日志 LogUtils xUtils简介 xU

Android中通过注解代替findViewById方法

尊重原创 http://write.blog.csdn.net/postedit/26507351 这篇文章主要讲解注解实现findViewById的功能,首先我们来熟悉一下在java中怎么定义一个注解和解析一个注解 注解的概念是在jdk5.0中提出来的,在java.lang的包中已经定义了三个注解:Override,Deprecated,SuppressWarnings Override相信大家非常熟悉,就是表明这个方法是改写了父类的方法 Deprecated表示在新版本的 jdk中已经不建议

Android Xutils框架使用问题及解决办法

刚刚写了篇博客,提了下在使用XUtils时遇到的一个问题Android Xutils框架HttpUtil Get请求缓存问题 ,既然已经提起来这个问题,那我想了下,就把之前使用Xutils时遇到的几个小问题整理一下. 一. HttpUtil Get请求缓存问题 关于Xtuls框架的Http模块的get请求方法,会有缓存问题--即进行get请求时,在缓存规定的时间内,如果发送同样的请求url,则不会再次请服务器发送请求,而是直接返回上次请求的结果. 之前写了一篇博客已经介绍的很详细了,可查看<An

Android 编译时注解-提升

Android 编译时注解-提升 背景 在前面的文章中,讲解了注解和编译时注解等一些列相关的内容,为了更加全面和真是的了解Android 编译时注解在实战项目中的使用,本文采取实现主流框架butterknife注入view去全面认识编译时注解. 注解专栏-博客 效果 先来张图压压惊,实现效果butterknife的view绑定 使用 仿照butterknife实现了@BindView注解,通过WzgJector.bind方法绑定当前MainActivity,整体和butterknife使用完全一

理解Android中的注解与反射

前言 最近一段时间在研究EventBus和Retrofit 的过程中,都遇到了注解这个概念.由于在学习Java的时候对这方面没有深入了解过,所以看起相关的代码来,总会有点不知其所以然,这里就注解和反射的使用做一下总结. 这里我们先从反射说起,了解了反射的意义及用法后,我们在看看注解的使用,最后叙述一下在Android开发中是怎样结合使用注解与反射. 反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法: 对于任何一个对象

Android xUtils框架(一) DbUtils

在DbUtils中,只支持4中数据类型: public enum ColumnDbType { INTEGER("INTEGER"), REAL("REAL"), TEXT("TEXT"), BLOB("BLOB"); private String value; ColumnDbType(String value) { this.value = value; } @Override public String toString

Android:XUtils框架的简单应用

XUtils是目前git上比较活跃 功能比较完善的一个框架,是基于afinal开发的,比afinal稳定性提高了很多. xUtils简介 xUtils 包含了很多实用的android工具. xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls最低兼容android 2.2 (api level 8) 目前xUtils主要有四大模块: DbUti