OrmLite使用笔记

本文详细介绍了使用OrmLite进行数据库操作的各种查询方法,包括eq、lt、gt等条件筛选,以及and、or逻辑组合,还涵盖了ORDER BY、DISTINCT、GROUP BY、offset Limit等复杂查询。适合Android开发者学习。
摘要由CSDN通过智能技术生成

OrmLite使用笔记

学习这个查了不少博客 , 特别是鸿洋大神的, 说实话这个并不是很好用, 如果不是有特殊需求的话, 郭霖的LitePal可能对新手来说更简单一些

1. 第一步添加依赖

compile 'com.j256.ormlite:ormlite-android:5.0'

http://ormlite.com/releases/ 下载jar包

2. 建立数据库实体类
  @DatabaseTable(tableName = "tab_violation")  //定义表名
  public class Violation {
  
  
      //generatedId 定义 主键 自增长,
      //columnName 定义该字段在数据库中的列名
      //使用generateId=true,则id由数据库自己维护,自动增长效果
      //设置注解 id=true 时id可以由我们自己赋值
      @DatabaseField(columnName = "id",generatedId = true)
      private int id;
  
      @DatabaseField(columnName = "viol_count")
      private int violCount;
  
      @DatabaseField(columnName = "car_id")
      private String carId;
  
      @DatabaseField(columnName = "minut_sun")
      private int minuteSun;
  
      @DatabaseField(columnName = "money_sun")
      private int moneySun;
      
      // 定义一对多关系, 违章包含许多违章详情
      // 必须用ForeignCollection 不能用ArrayList
      // Collection : 集合, List实现了Collection 接口
      @ForeignCollectionField(eager = false)
      private ForeignCollection <Result> violEvent;
  
      public Violation(){} //必须要添加无参构造方法
  
      public Violation(int violCount, String carId, int minute, int money) {
  
          this.violCount = violCount;
          this.carId = carId;
          this.minuteSun = minute;
          this.moneySun = money;
      }
  
      //代码省略,大量生成get和set
  }
  
  @DatabaseTable(tableName = "tab_violinfo")
  public class ViolInfo {
  
      
      @DatabaseField(columnName = "id",generatedId = true)
      private int id;
      
      // foreign = true 定义外键
      // foreignAutoRefresh = true 自动刷新,为了省事最好写上,不然通过外键获取到的只有id
      // 外键如果自定义id, 那么默认为 viol_id 
      @DatabaseField(foreign = true,foreignAutoRefresh = true)
      private Violation viol;
      
      @DatabaseField(columnName = "viol_time")
      private String violTime;
      
      @DatabaseField(columnName = "viol_loc")
      private String violLoc;
      
      @DatabaseField(columnName = "viol_status")
      private boolean violStatus;
      
      @DatabaseField(columnName = "viol_Info")
      private String violInfo;
      
      @DatabaseField(columnName = "viol_time")
      private String violTime;
      
      @DatabaseField(columnName = "viol_minute")
      private String violMinute;
      
      @DatabaseField(columnName = "viol_money")
      private String violMoney;
     
  }

3.将实体类与数据库关联
  public class DataBaseHelper extends OrmLiteSqliteOpenHelper {
  
  
      private static final String TABLE_NAME = "text.db";
      private static DataBaseHelper helper ;
  
      // Dao<T,ID> 泛型接口, T 代表 Dao实体类, ID 代表主键类型
      //private Dao<Violation,Integer> violationDao;
  
      // 用来存放Dao的 Map
      private Map<String, Dao> daos = new HashMap<String, Dao>();
  
      // 私有化构造方法, 不能new对象, 是实现单例模式的一部分
      private DataBaseHelper (Context context){
  
          // 参数分别为 上下文, 表名 , 游标实例(为null就好) , 数据库版本
          super(context,TABLE_NAME,null,1);
      }
  
  
  
      @Override
      public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
  
          try {
  
              // TableUtils.createTable() 是库自带的建表工具
              TableUtils.createTable(connectionSource, Violation.class);
          } catch (SQLException e) {
  
              e.printStackTrace();
          }
      }
  
  
       //更新表, 即删除后再重新创建
      @Override
      public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
  
          try {
  
              // 删除表
              TableUtils.dropTable(connectionSource, Violation.class, true);
          }catch (SQLException e) {
  
              e.printStackTrace();
          }
          onCreate(sqLiteDatabase,connectionSource);
      }
  
      // 单例模式获取 DataBaseHelper 实例
      public static DataBaseHelper getHelper(Context context){
  
         context = context.getApplicationContext();
          if (helper == null){
  
              synchronized (DataBaseHelper.class) {
  
                  if (helper == null)
                      //这里创建对象
                      helper = new DataBaseHelper(context);
              }
          }
          return helper;
      }
  
      // 获得 Dao 实例
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值