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);
  • 相关阅读:
    wex5 实战 框架拓展之2 事件派发与data刷新
    wex5 实战 框架拓展之1 公共data组件(Data)
    wex5 实战 HeidiSQL 导入Excel数据
    wex5 实战 手指触屏插件 hammer的集成与优劣
    wex5 实战 登陆帐号更换与用户id一致性
    wex5 实战 用户点评与提交设计技巧
    wex5 实战 省市县三级联动与地址薄同步
    wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
    wex5 实战 单页模式下的多页面数据同步
    [BZOJ]4237: 稻草人
  • 原文地址:https://www.cnblogs.com/Codenewbie/p/2973248.html
Copyright © 2011-2022 走看看