阅读:11159次
评论:4条
更新时间:2011-05-26
在 如何开始使用 Nutz 一文中,我们简单的介绍了如何插入,插入非常简单,那么进行数据库的基本操作将非常简单,比如:
在阅读这篇文章之前,你或许需要看看 Nutz.Dao 实体注释(Entity Annotation)一览表
插入: Insert
insert 方法的返回值就是 p 并且如果你设置了自动增长的 @Id , 它会为你的取得这个新 Id 值。 执行 dao.insert 就是相当于执行一段 INSERT INTO 的 SQL 语句。
更新: Update
如果你的POJO没有声明 @Id 或者 @Name ,那么Nutz.Dao会抛出一个 RuntimeException。
在更新对象的时候,所有的字段(包括值为null的字段)都会被写入数据库,为了避免写入NULL字段,甚至考虑多一些,你不想让某些字段被写入对应的数据表,你可以在 POJO 对应的字段上声明 @Readonly, 如果你只有在程序运行时才能确定字段是否该写,你需要使用Nutz.Dao提供的字段过滤模板,该模板只对dao.update 函数有作用:
描述更新和不更新字段的参数均为正则表达式,比如下面这段代码告诉 Nutz.Dao, 更新Person对象p 的 name | birthday | age 这三个字段,并且如果这三个字段的值为null,忽略该字段。
而下面这段代码告诉 Nutz.Dao, 更新Person对象 p 所有的字段,除了 email | address 这两个字段需要忽略,并且即使是字段值为null,也要更新到数据库里(当然,如果该字段有 Not Null 描述,则会抛出异常)
在阅读这篇文章之前,你或许需要看看 Nutz.Dao 实体注释(Entity Annotation)一览表
插入: Insert
dao.insert(p)
insert 方法的返回值就是 p 并且如果你设置了自动增长的 @Id , 它会为你的取得这个新 Id 值。 执行 dao.insert 就是相当于执行一段 INSERT INTO 的 SQL 语句。
更新: Update
dao.update(p)
如果你的POJO没有声明 @Id 或者 @Name ,那么Nutz.Dao会抛出一个 RuntimeException。
在更新对象的时候,所有的字段(包括值为null的字段)都会被写入数据库,为了避免写入NULL字段,甚至考虑多一些,你不想让某些字段被写入对应的数据表,你可以在 POJO 对应的字段上声明 @Readonly, 如果你只有在程序运行时才能确定字段是否该写,你需要使用Nutz.Dao提供的字段过滤模板,该模板只对dao.update 函数有作用:
FieldFilter.create(你的POJO类对象,哪些字段需更新,哪些字段不需更新,是否要忽略null值的字段).run(new Atom(){ public void run(){ dao.update(p); } });
描述更新和不更新字段的参数均为正则表达式,比如下面这段代码告诉 Nutz.Dao, 更新Person对象p 的 name | birthday | age 这三个字段,并且如果这三个字段的值为null,忽略该字段。
FieldFilter.create(Person.class,"name|birthday|age",null,true).run(new Atom(){ public void run(){ dao.update(p); } });
而下面这段代码告诉 Nutz.Dao, 更新Person对象 p 所有的字段,除了 email | address 这两个字段需要忽略,并且即使是字段值为null,也要更新到数据库里(当然,如果该字段有 Not Null 描述,则会抛出异常)
FieldFilter.create(Person.class,null,"email|address",true).run(new Atom(){ public void run(){ dao.update(p); } });
4 楼 defier 2009-09-30 18:54
3 楼 switch200500 2009-05-22 16:40
2 楼 zozoh 2009-05-22 01:02
1 楼 switch200500 2009-05-21 22:46