您的位置:首页 > 数据库

xUtils3.0使用介绍:数据库模块

2017-02-22 16:23 531 查看
步骤: 

1. 创建数据表 

2. DaoConfig 获取数据库的配置信息 

3. 获取数据库实例: x.getDb(daoConfig); 

4. 数据库的增删改查


第一步,创建一张数据表

在这里要强调的是,数据库里面表的创建的时间,只有在你对数据库里面的操作涉及到这张表的操作时,会先判断当前的表是否存在,如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD操作。
@Table(name = "person")
public class person {
@Column(name = "id", isId = true, autoGen = true)
public int id;

@Column(name = "name")
public String name;// 姓名

@Column(name = "age")
public int age;// 年龄

@Column(name = "sex")
public String sex;// 性别

@Column(name = "salary")
public String salary;// 工资

@Override
public String toString() {
return "person [id=" + id + ", name=" + name + ", age=" + age
+ ", sex=" + sex + ", salary=" + salary + "]";
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

上表中包含了db相关Annotation:
@Check    check约束
@Column   列名
@Finder   一对多、多对一、多对多关系(见sample的Parent、Child中的使用)
@Foreign  外键
@Id       主键,当为int类型时,默认自增。 非自增时,需要设置id的值
@NoAutoIncrement  不自增
@NotNull  不为空
@Table    表名
@Transient  不写入数据库表结构
@Unique   唯一约束
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10


第二步:DaoConfig 获取数据库的配置信息

这个配置最好写在工具类中,方便调用:
private static DaoConfig daoConfig;
public static DaoConfig getDaoConfig(){
if(daoConfig==null){
daoConfig = new DbManager.DaoConfig()
.setAllowTransaction(true)//设置允许开启事务
.setDbName("test.db")//创建数据库的名称
// 不设置dbDir时, 默认存储在app的私有目录.
.setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了.
.setDbVersion(1)//数据库版本号
.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();
}
});
}
return daoConfig;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30


第三步:获取数据库实例

DaoConfig daoConfig = xUtils.getDaoConfig();
db = x.getDb(daoConfig);
1
2
1
2


第四部步:数据库的增删改查

通过DbManager这个类我们知道主要它做了以下几件事情:
.getDaoConfig 获取数据库的配置信息
getDatabase 获取数据库实例
saveBindingId ;saveOrUpdate ; save 插入数据的3个方法(保存数据)
replace 只有存在唯一索引时才有用 慎重
.delete操作的4种方法(删除数据)
update操作的2种方法(修改数据)
find操作6种方法(查询数据)
dropTable 删除表
addColumn 添加一列
dropDb 删除数据库


增:

try {
List<person> list = new ArrayList<person>();
for (int i = 0; i < 1; i++) {
person person = new person();
person.name = "wingli"+i;
person.age = 18;
person.salary = "1000元";
person.sex = "男";
list.add(person);
}
db.save(list);//保存实体类或实体类的List到数据库
//          db.saveOrUpdate(list);//保存或更新实体类或实体类的List到数据库, 根据id对应的数据是否存在
//          db.saveBindingId(list);保存实体类或实体类的List到数据库,如果该类型的id是自动生成的, 则保存完后会给id赋值
} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


查:

try {
//1
db.findById(person.class, 1);//通过主键的值来进行查找表里面的数据
//2
db.findFirst(person.class);//返回当前表里面的第一条数据
//3
List<person> findAll = db.findAll(person.class);//返回当前表里面的所有数据
//4
//          db.findDbModelAll(new SqlInfo("select * from person where age > 25"));
DbModel model = db.findDbModelFirst(new SqlInfo("select * from person where age > 25"));
model.getString("age");//model相当于游标
//5
List<person> findAll2 = db.selector(person.class).expr("age >10").findAll();//主要是用来进行一些特定条件的查找

} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


try {
//1
db.delete(person.class);//该方法是删除表中的全部数据
//2
db.deleteById(person.class, 12);//该方法主要是根据表的主键(id)进行单条记录的删除
//3
db.delete(person.class, WhereBuilder.b("age", ">","20"));//根据where语句的条件进行删除操作
//4
List<person> findAll = db.selector(person.class).expr("age > 20").findAll();
db.delete(findAll);//根据实体bean进行对表里面的一条或多条数据进行删除
} catch (DbException e) {
e.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13


改:

try {
List<Person> findAll = db.findAll(Person.class);
for (Person person : findAll) {
person.age = 1;
person.salary = "qqqqq";
}
db.update(findAll, "age");//可以使对象、集合
} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11


添加一个字段:

通常用在数据库升级
db.addColumn(Person.class, "count");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: