• Android数据库ORMlite框架翻译系列(第一章)


    前言

      个人感觉android上sqlite已经比较好用,但是如果需要在android上像J2EE那样开发的话那么sqlite还是显得比较复杂,这个时候你当然可以选择一些android平台上的ORM框架。ORM框架是做什么的,android平台上有哪些好用的ORM框架,这些问题你通通可以google得到你满意的结果,在此不做解释。本系列主要是翻译ORMlite文档。

      为什么翻译ORMlite?简单点说就是因为个人觉得ORMlite是android平台上不错的ORM框架,官方也提供了很多相关介绍。但是几乎没有看到有中文文档。为了更多人可以学习到这个框架所以决定把官方的文档翻译成中文。个人英语水平非常有限,但是本人会尽力,如果文中有不妥的翻译之处敬请告之。文档中的比较杂的内容就不在文档中进行翻译,比如参见xxx连接,这些没有意义。主要翻译的技术文档而非专业英语,但基本会保持原文档的内容。

    -------------------------------------------------------------------------------------

    1 获得开始

    1.1 下载ORMlite jar

     
     

    为了使用ORMLite,你需要下载相关的jar文件。ORMLite发布包是一个默认库,不过相关jar文件也可以通过网络从内部资源库里面获得。

    通过JDBC连接SQL 数据库的用户需要下载ormlite-jdbc-4.41.jar和ormlite-core-4.41.jar两个文件。在android应用中使用,你需要下载ormlite-android-4.41.jarormlite-core-4.41.jar两个文件。在有ORMlite后台实现的JDBC中或者是Android中你都需要ormlite-core发布包。ORMLite没有任何外部依赖,即使可能有你想用的其他选用包。

    1.2 配置class

    下面是个class通过使用ORMlite 注解配置持久化到数据的例子。@DatabaseTable 注解配置Access类到数据库名为accounts的表。@DatabaseField注解映射Account中的每个字段到数据库中相同名字的字段。

    一个字段需要配置成数据库中表的主键那么可以通过使用id=true 注解字段。并且,值得一提的是一个无参的构造器是必须的,这样的话通过查询可以返回一个对象。

     

    @DatabaseTable(tableName = "accounts")
    
    public class Account {
    
    @DatabaseField(id = true)
    
    private String name;
    
    @DatabaseField
    
    private String password;
    
    public Account() {
    
    // ORMLite needs a no-arg constructor
    
    }
    
    public Account(String name, String password) {
    
    this.name = name;
    
    this.password = password;
    
    }
    
    public String getName() {
    
    return name;
    
    }
    
    public void setName(String name) {
    
    this.name = name;
    
    }
    
    public String getPassword() {
    
    return password;
    
    }
    
    public void setPassword(String password) {
    
    this.password = password;
    
    }
    
    }

     

     


    1.3 配置 DAO

    一个典型的java隔离数据库操作的模式是用数据访问对象类(Data Access Objects,即DAO)。每个DAO提供增、删、改等操作。这中功能专注于处理一个单一持久化的类。一种简单的创建DAO的方式是使用DaoManager类的静态方法createDao。例如,为上面定义的Account类创建一个DAO你可以这样做:

     

    Dao<Account, String> accountDao =
    
    DaoManager.createDao(connectionSource, Account.class);
    
    Dao<Order, Integer> orderDao =
    
    DaoManager.createDao(connectionSource, Order.class);

     

     


    1.4 代码示例

    这个示例使用本地Java H2数据库,创建一个在内存中运行的测试数据库。如果你想把示例代码跑起来那么你需要下载并且添加H2 jar文件到你的classpath中。注意:android用户需要看本手册android部分具体的文档。

    代码执行下面几步:

    ①创建connection,这个connection可以操作数据库。

    ②为Account对象实例化一个DAO

    accounts数据库表已经创建过。如果这个表已经创建好的话那么这几步就不必要了。

     

    public class AccountApp {
    
    public static void main(String[] args) throws Exception {
    
    // this uses h2 by default but change to match your database
    
    String databaseUrl = "jdbc:h2:mem:account";
    
    // create a connection source to our database
    
    ConnectionSource connectionSource =
    
    new JdbcConnectionSource(databaseUrl);
    
    // instantiate the dao
    
    Dao<Account, String> accountDao =
    
    DaoManager.createDao(connectionSource, Account.class);
    
    // if you need to create the 'accounts' table make this call
    
    TableUtils.createTable(connectionSource, Account.class);
    
    Once we have congured our database objects, we can use them to persist an Account
    
    to the database and query for it from the database by its ID:
    
    // create an instance of Account
    
    Account account = new Account();
    
    account.setName("Jim Coakley");
    
    // persist the account object to the database
    
    accountDao.create(account);
    
    // retrieve the account from the database by its id field (name)
    
    Account account2 = accountDao.queryForId("Jim Coakley");
    
    System.out.println("Account: " + account2.getName());
    
    // close the connection source
    
    connectionSource.close();
    
    }
    
    }

     

     


    通过这些要点你应该能够开始使用ORMLite了。为了理解ORMlite更多有效的功能,继续学习下一章。

    PS:翻译持续更新中。如果转载请说明出处。

  • 相关阅读:
    【并查集】bzoj1015 [JSOI2008]星球大战starwar
    【二分】bzoj2083 [Poi2010]Intelligence test
    【分块答案】【最小生成树】【kruscal】bzoj1196 [HNOI2006]公路修建问题
    【莫队算法】【权值分块】bzoj3809 Gty的二逼妹子序列
    【莫队算法】【权值分块】bzoj3236 [Ahoi2013]作业
    【分块答案】【最小割】bzoj1532 [POI2005]Kos-Dicing
    【费用流】bzoj3280 小R的烦恼
    【最小路径覆盖】【二分图】【最大流】【Dinic】bzoj2150 部落战争
    【枚举】【二分答案】【分块答案】【BFS】【最大流】【Dinic】bzoj1189 [HNOI2007]紧急疏散evacuate
    【最短路】【spfa】【最小割】【Dinic】bzoj1266 [AHOI2006]上学路线route
  • 原文地址:https://www.cnblogs.com/vanezkw/p/2617210.html
Copyright © 2020-2023  润新知