黑马程序员技术交流社区

标题: Android 中的ORM框架 [打印本页]

作者: y1787257661    时间: 2015-1-8 19:37
标题: Android 中的ORM框架
在android 中,内置了sqlite数据库,java web 中,用惯了Hibernate ,想找找android中是否也有类似的orm框架,后来在开源中国看到了orman,这是一个很不错的框架。

这个可以帮我们快捷方便的实现数据库的CURD操作。下面以Users这个用户类为例,和大家分享一下我的心得。

大家先在工程中导入orman的jar包。

这是我写的users类
  1. package xidian.wwf.entity;

  2. import java.io.Serializable;

  3. import org.orman.mapper.Model;
  4. import org.orman.mapper.ModelQuery;
  5. import org.orman.mapper.annotation.Column;
  6. import org.orman.mapper.annotation.Entity;
  7. import org.orman.mapper.annotation.PrimaryKey;
  8. import org.orman.sql.C;

  9. /**
  10. * 用户类
  11. * @author WWF
  12. * @date 2012-12-16 下午1:22:37
  13. */
  14. @SuppressWarnings("serial")
  15. @Entity(table="users")
  16. public class Users extends Model<Users>implements Serializable{
  17.     @PrimaryKey//自增的话,@PrimaryKey(autoIncrement=true)
  18.     @Column(name="user_id",type="int")//映射的字段名和类型,类型可以省略不写
  19.     public int userId;
  20.     @Column(name = "user_name",type="text")
  21.     public String userName;
  22.     @Column(name="user_password",type="text")
  23.     public String userPassword;
  24.     @Column(name="login_time",type="text")
  25.     public String loginTime;
  26.      
  27.     @Override
  28.     public void update() {
  29.         Model.execute(ModelQuery.update().from(Users.class)
  30.                 .set(Users.class, "user_name", userName)
  31.                 .set(Users.class, "user_password",userPassword)
  32.                 .set(Users.class, "login_time", loginTime)
  33.                 .where(C.eq("user_id", userId))
  34.                 .getQuery());
  35.     }
  36.      
  37.      
  38. }
  39. 因为orman对于持久化的支持不咋符合我们的操作习惯,所以我个人比较喜欢重写其update方法,就几行代码。android中,字段尽量少,存储重要的数据。所以这个工程量较少。然后在应用启动时,要注册这个users类,在启动的Application中注册,

  40. 代码如下

  41. Database db = new SQLiteAndroid(this, AppConfig.DATABASE_PATH+AppConfig.DATABASE_FILENAME);
  42.         MappingSession.registerDatabase(db);
  43.         //注册实体类
  44.         MappingSession.registerEntity(Users.class);
  45.         MappingSession.registerEntity(Channel.class);
  46.         MappingSession.registerEntity(RSSItem.class);
  47.         MappingSession.registerEntity(ChannelGroup.class);
  48.         MappingSession.start();
  49. 然后在任何的Activity 中就可以使用了,
复制代码
  1. Users user = new Users();
  2. //插入
  3. user.insert();
  4. //删除
  5. user.delete();
  6. //更新
  7. user.update();
  8. //查询
  9. user = Model.fetchSingle(ModelQuery.select().from(Users.class).
  10. where(C.eq("user_id", id)).getQuery(), Users.class);
  11. //查询更多
  12. List<Users> users = Model.fetchQuery(ModelQuery.select().from(Users.class).where(
  13. C.like("user_name", "%2%")).getQuery(), Users.class);
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2