在android 中,内置了sqlite数据库,java web 中,用惯了Hibernate ,想找找android中是否也有类似的orm框架,后来在开源中国看到了orman,这是一个很不错的框架。
这个可以帮我们快捷方便的实现数据库的CURD操作。下面以Users这个用户类为例,和大家分享一下我的心得。
大家先在工程中导入orman的jar包。
这是我写的users类- package xidian.wwf.entity;
-
- import java.io.Serializable;
-
- import org.orman.mapper.Model;
- import org.orman.mapper.ModelQuery;
- import org.orman.mapper.annotation.Column;
- import org.orman.mapper.annotation.Entity;
- import org.orman.mapper.annotation.PrimaryKey;
- import org.orman.sql.C;
-
- /**
- * 用户类
- * @author WWF
- * @date 2012-12-16 下午1:22:37
- */
- @SuppressWarnings("serial")
- @Entity(table="users")
- public class Users extends Model<Users>implements Serializable{
- @PrimaryKey//自增的话,@PrimaryKey(autoIncrement=true)
- @Column(name="user_id",type="int")//映射的字段名和类型,类型可以省略不写
- public int userId;
- @Column(name = "user_name",type="text")
- public String userName;
- @Column(name="user_password",type="text")
- public String userPassword;
- @Column(name="login_time",type="text")
- public String loginTime;
-
- @Override
- public void update() {
- Model.execute(ModelQuery.update().from(Users.class)
- .set(Users.class, "user_name", userName)
- .set(Users.class, "user_password",userPassword)
- .set(Users.class, "login_time", loginTime)
- .where(C.eq("user_id", userId))
- .getQuery());
- }
-
-
- }
- 因为orman对于持久化的支持不咋符合我们的操作习惯,所以我个人比较喜欢重写其update方法,就几行代码。android中,字段尽量少,存储重要的数据。所以这个工程量较少。然后在应用启动时,要注册这个users类,在启动的Application中注册,
- 代码如下
- Database db = new SQLiteAndroid(this, AppConfig.DATABASE_PATH+AppConfig.DATABASE_FILENAME);
- MappingSession.registerDatabase(db);
- //注册实体类
- MappingSession.registerEntity(Users.class);
- MappingSession.registerEntity(Channel.class);
- MappingSession.registerEntity(RSSItem.class);
- MappingSession.registerEntity(ChannelGroup.class);
- MappingSession.start();
- 然后在任何的Activity 中就可以使用了,
复制代码- Users user = new Users();
- //插入
- user.insert();
- //删除
- user.delete();
- //更新
- user.update();
- //查询
- user = Model.fetchSingle(ModelQuery.select().from(Users.class).
- where(C.eq("user_id", id)).getQuery(), Users.class);
- //查询更多
- List<Users> users = Model.fetchQuery(ModelQuery.select().from(Users.class).where(
- C.like("user_name", "%2%")).getQuery(), Users.class);
复制代码 |
|