DAO接口的基本操作
2017-05-04 19:48
288 查看
创建数据表
为 Pet 创建数据表,如果数据表存在,则自动忽略//一般我们都这样写 dao.create(Pet.class, false);
[/code]
删除数据表
删除 Pet 的数据表dao.drop(Pet.class);//全部删掉哦,没条件的,慎用!!
[/code]
插入 Insert
Person p = new Person(); p.setName("Peter"); p.setAge(22); dao.insert(p); System.out.println(p.getId());
[/code]
Person 对象的 Id 被自动更新
取得 Fetch
根据名称获取 (如果你的实体声明了 @Name 字段, 字符型主键,或者带唯一性索引的字段)Person p = dao.fetch(Person.class,"Peter"); System.out.println(p.getId());
[/code]
根据 ID 获取 (如果你的实体声明了 @Id 字段, 数值型主键)
Person p = dao.fetch(Person.class,2); System.out.println(p.getName());
[/code]
@Id和@Name可以同时存在于一个Pojo类内,但不允许标注在同一个属性,毕竟不可以同时是数值型主键又是字符型主键
更新 Update
Person p = dao.fetch(Person.class,2); p.setAge< 1250d span class="token punctuation" style="color:rgb(153,153,153);">(32); dao.update(p) dao.update(p, "^age$"); //仅更新age,参数是个正则表达式 // 注意, p至少带@Id/@Name/@Pk中的一种 dao.update(list, "^age$"); //更新一个集合也是可以的
[/code]
更新多条
// 根据特定条件更新特定字段 dao.update(Person.class, Chain.make("dead",true), Cnd.where("age",">",150)); // 常用的+1更新 dao.update(Person.class, Chain.makeSpecial("age", "+1").add("location", "yvr"), Cnd.where("name","=", "wendal"));
[/code]
删除 Delete
直接删对象dao.delete(pet); // Pet必须带@Id/@Name/@Pk中的一种或多种
[/code]
根据名称删除 (如果你的实体声明了 @Name 字段). 批量删除请用clear
dao.delete(Person.class,"Peter");
[/code]
根据 ID 删除 (如果你的实体声明了 @Id 字段)
dao.delete(Person.class,2);
[/code]
直接删列表. 如果要按条件删,用dao.clear
dao.delete(list);
[/code]
查询 Query
查询全部记录
List<Person> people = dao.query(Person.class, null);
[/code]
按条件查询
List<Person> people = dao.query(Person.class, Cnd.where("name", "like", "P%"));
[/code]
Cnd 类的全名是 org.nutz.dao.Cnd
它主要是用来快速替你建立一个 org.nutz.dao.Condition 接口的实现类
where() 函数 第一个参数是字段名,要和 Java 类里面的字段名相同。
where() 函数 第二个参数遵循 SQL 的标准,可以是
>,
<,
>=,
<=等等
提供了一个 wrap 函数,你可以直接写 SQL 的条件
如果你愿意,你完全可以自己实现一个 Condition,来做更复杂灵活的判断
关于更多的查询条件的说明,请参看 复杂条件
分页查询
List<Person> people = dao.query(Person.class, Cnd.where("age", ">", 18), dao.createPager(2, 4));
[/code]
dao.createPager 第一个参数是第几页,第二参数是一页有多少条记录
关于分页更多的说明,请参看 分页查询
清除 Clear
清除所有记录
dao.clear(Person.class); //还是那句,慎用
[/code]
按条件清除
dao.clear(Person.class,Cnd.where("id", ">", 35));
[/code]
关于更多的清除条件的说明,请参看 复杂条件
插入和更新集合
无论是插入 (Insert) 还是更新 (Update),你传入的对象都可以不仅仅是一个 POJO,你可以传入:集合
( Collection<?> )
Map<?,?>
数组
( T[] )
Nutz.Dao 会自动替你拆包,对集合成员依次执行相应操作。 对于 Map,它会迭代每一个值。
集合操作(func)
整数类型. 例如调用sum
dao.func(Person.class, "sum", "age");
[/code]
其他类型
dao.func2(Person.class, "min", "price");
[/code]
自动建表
Dao接口有一个create方法,通过它可以让nutz为你建好数据库表dao.create(Pet.class, false);
[/code]
第一个参数是Pojo类, 第二个参数是如果表存在,是不是先删再重新建,否则就是保持原样
字段的详细定义,例如定义长度
@ColDefine(width=1024) private String data;
[/code]
强制自定义字段类型
@ColDefine(customType="TEXT", type=ColType.VARCHAR) private String fu;
[/code]
添加索引, 类级注解
@TableIndexes({@Index(name="orderid_userid", fields={"orderId", "userId"})}) public class UserOrder { private long id; private long orderId; private long userId; //... 其他属性 }
[/code]
局限性
不生成外键,我们也不推荐用外键只能解决一般建表需求,复制的表结构请通过自定义sql完成
相关文章推荐
- Dao接口实现基本的数据库操作。增删改查
- Dao 接口的基本操作
- nutz框架Dao 接口的基本操作
- 在window下的Mysql基本操作以接口的方式封装并提供出来,C++多线程操作
- JDBC应用程序常见接口API和基本操作步骤
- HBase的Java接口基本操作:创建表插入查询删除
- JDBC常用类和接口及基本操作示例
- 详解Spring Boot实战之Rest接口开发及数据库基本操作
- MongoDB基本的操作及C接口使用-MongoDB C Driver
- GreenDAO之「03.AS环境下的基本操作」
- JEE数据库基本操作Basedao层通用接口的实现
- POSIX多线程--线程基本操作接口
- Caffe的matlab接口的基本操作
- 基于hibernate的基本dao接口与实现 及 sql模糊查询特殊字符处理 及 struts 特殊字符在界面正常回显
- Android操作数据库的框架-GreenDao基本使用记录
- 泛型dao架构实现,封装crud等基本操作
- hdfs基本操作-python接口
- Spring Boot实战之Rest接口开发及数据库基本操作
- 泛型dao架构实现,封装crud等基本操作
- 一起来学POSIX thread 之 线程的创建和基本操作接口