插入 | Insert | 一条 SQL 插入一条记录或者多条记录 |
插入 | FastInsert | 一条 SQL ,通过batch插入多条记录 |
删除 | Delete | 一条 SQL 删除一条记录 |
更新 | Update | 一条 SQL 更新一条或者多条记录 |
获取 | Fetch | 一条 SQL 获取一条记录 |
查询 | Query | 一条 SQL 根据条件获取多条记录 |
清除 | Clear | 一条 SQL 根据条件删除多条记录 |
建表 | Create | 根据实体建表 |
删表 | Drop | 根据实体/表名称进行删表 |
聚合 | Func | 执行sum,count等操作 |
创建数据表:为pet创建数据表,如果数据表存在,则自动忽略
dao.create(Pet.class,false);
删除数据表: 删除Pet的数据表
dao.drop(Pet.class); //全部删除掉,没条件的,慎用!!!
插入Insert
Person p = new Person();
p.setName("Peter");
p.setAge(22);
dao.insert(p);
System.out.println(p.getId());
取得Fetch
根据名称获取 (如果你的实体声明了 @Name 字段, 字符型主键,或者带唯一性索引的字段)
Person p=dao.fetch(Person.class,"peter");
system.out.println(p.getId());
根据ID获取(如果你的实体声明了@Id字段,数值型主键)
Person p=dao.fetch(Person.class,2);
Systen.out.println(p.getname());
@Id和@Name可以同时存在于一个Pojo类内,但不允许标注在同一个属性,毕竟不可以同时是数值型主键又是字符型主键
更新UPdate
Person p=dao.fetch(Person.class,2);
p.setAge(32);
dao.update(p) //单条更新
dao.update(Person.class,Chain.makeSpecial("age","+1").add("location","yvr"),Cnd.where("name","=","wendal)); //多条更新
删除Delete
根据名称删除(如果你的实体声明了 @Name 字段). 批量删除请用clear
dao.delete(Person.class,"Peter");
查询Query
查询全部记录
List<Person> people =dao.query(person.class,null);
按条件查询
List<Person> people = dao.query(Person.class, Cnd.where("name", "like", "P%"));
- Cnd 类的全名是 org.nutz.dao.Cnd
- 它主要是用来快速替你建立一个 org.nutz.dao.Condition 接口的实现类
- where() 函数 第一个参数是字段名,要和 Java 类里面的字段名相同。
- where() 函数 第二个参数遵循 SQL 的标准,可以是
>
,<
,>=
,<=
等等 - 提供了一个 wrap 函数,你可以直接写 SQL 的条件
分页查询
List<Person> people = dao.query(Person.class, Cnd.where("age", ">", 18), dao.createPager(2, 4));
- dao.createPager 第一个参数是第几页,第二参数是一页有多少条记录
清除Clear
清除所有记录
dao.clear(Person.class); //还是那句,慎用
按条件清除
dao.clear(Person.class,Cnd.where("id", ">", 35));
集合操作(func)
整数类型。例如调用sum
dao.func(Person.class, "sum", "age");
其他类型
dao.func2(Person.class, "min", "price");
自动建表
Dao接口有一个create方法,通过它可以让nutz为你建好数据库表
dao.create(Pet.class, false);
第一个参数是Pojo类, 第二个参数是如果表存在,是不是先删再重新建,否则就是保持原样
字段的详细定义,例如定义长度
@ColDefine(width=1024)
private String data;
强制自定义字段类型
@ColDefine(customType="TEXT", type=ColType.VARCHAR)
private String fu;
添加索引, 类级注解
@TableIndexes({@Index(name="orderid_userid", fields={"orderId", "userId"})})
public class UserOrder {
private long id;
private long orderId;
private long userId;
//... 其他属性
}
局限性
- 不生成外键,我们也不推荐用外键
- 只能解决一般建表需求,复杂的表结构请通过自定义sql完成