zoukankan      html  css  js  c++  java
  • Android 中的ORM框架

    在android 中,内置了sqlite数据库,java web 中,用惯了Hibernate ,想找找android中是否也有类似的orm框架,后来在开源中国看到了orman,这是一个很不错的框架。

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

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

    这是我写的users类

    package xidian.wq.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);
  • 相关阅读:
    Beware of GPU memory bandwidth
    XNA中的RenderTarget
    Scene Management Culling
    More on Scene Management
    关于quaternion的笔记
    用XNA显示GPU系统信息
    Scene Management Collision Detection
    些关于引擎设计,Scene Management的文章
    XNA下的中文显示
    Skeletal Model and Skinning Animation
  • 原文地址:https://www.cnblogs.com/Codenewbie/p/2973248.html
Copyright © 2011-2022 走看看