Android的LitePal开源数据库框架学习笔记
LitePal是一款非常好用的数据库开源框架,它采用了对象关系映射(ORM)的模式,使用这个框架从创建数据库到操作数据库都变成极其简单,那么我们就开始学习吧。它的开源地址:https://github.com/LitePalFramework/LitePal
首先加入依赖包
compile 'org.litepal.android:core:1.5.1'
创建litepal.xml配置文件,在app/src/main目录下创建assets文件夹,在该文件夹中创建litepal.xml文件,如果创建错地方会报错:dbname is empty or not defined in litepal.xml file, or your litepal.xml file is missing.
创建后的文件
并输入以下数据库信息
<?xml version="1.0" encoding="UTF-8" ?> <litepal><!--数据库的名字--><dbname value="School"></dbname><!--数据库的版本好--><version value="1"></version><!--表--><list><mapping class="com.example.dell.testlitepal.Student"></mapping></list> </litepal>
在AndroidManifest.xml配置文件中的application中加入android:name="org.litepal.LitePalApplication",如果没有配置也会报错:dbname is empty or not defined in litepal.xml file, or your litepal.xml file is missing.
创建数据表对应的JavaBean,让它继承DataSupport,LitePal会根据这个类生成数据表
import org.litepal.crud.DataSupport;public class Student extends DataSupport {private int id;private String number;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "学生{" +"id=" + id +", 学会='" + number + '\'' +", 姓名='" + name + '\'' +", 年龄=" + age +'}';} }
根据上面的配置生成数据表的SQL语句,可以看到id是关键字,且自增长
CREATE TABLE student (id integer primary key autoincrement,age integer, name text, number text);
生成的表
接下来就是各个操作了
插入
Student student = new Student(); student.setNumber("1238409"); student.setName("小明"); student.setAge(21); //必须使用save()才生效 student.save();
连续插入三条数据,打印结果
更新
Student student1 = new Student(); //设置要更新的数据 student1.setAge(0); student1.setName("111111"); //声明要设置的值是跟默认值冲突的列 student1.setToDefault("age"); //执行更新和说明条件 student1.updateAll("name = ?", "小明");
注意:当数据设置成跟默认值相同时是不会被更新的,比如int类型设置为0,boolean类型设置为false,Sting类型设置为null,这都不会更新的,因为系统认为这个是默认值,不是用户设置的,会忽略更新,要使用setToDefault()方法声明这列要更新。
更新后的结果
删除
//表对应的类、条件、条件值 DataSupport.deleteAll(Student.class, "id > ?", "2");
删除id>2的数据
查询全部
//只需要传入表对应的JavaBean类,返回是集合 List<Student> students = DataSupport.findAll(Student.class);
查询的结果
按条件查询
//在find加上where,写入条件 List<Student> students1 = DataSupport.where("age = ?", "21").find(Student.class);
查询的结果
SQL语句查询
List<Student> students2 = new ArrayList<>(); //同普通的SQL操作差不多 Cursor cursor = DataSupport.findBySQL("select * from student where age = ? and id> ?", "21", "3"); if (cursor != null) {while (cursor.moveToNext()) {Student stu = new Student();stu.setId(cursor.getInt(cursor.getColumnIndex("id")));stu.setNumber(cursor.getString(cursor.getColumnIndex("number")));stu.setName(cursor.getString(cursor.getColumnIndex("name")));stu.setAge(cursor.getInt(cursor.getColumnIndex("age")));students2.add(stu);}cursor.close(); }
查询结果
其他查询条件
//获取第一条数据 Student firstStu = DataSupport.findFirst(Student.class); //获取最后一条数据 Student lastStu = DataSupport.findLast(Student.class); //要查询某几列 List<Student> someLineStu = DataSupport.select("number", "name").find(Student.class); //排序查询,("列名 规则") desc降序 asc升序 List<Student> orderStu = DataSupport.order("age desc").find(Student.class); //只查前5条 List<Student> limitStu = DataSupport.limit(5).find(Student.class); //查询结果的偏移量,跟limit搭配可以做分页使用,下面是从第3条开始,共查询5条 List<Student> offsetStu = DataSupport.limit(5).offset(2).find(Student.class); //多种条件组合查询 List<Student> setStu = DataSupport.select("number", "name").where("id > ?", "3").order("age desc").limit(5).offset(4).find(Student.class);
项目源代码:http://download.csdn.net/download/qq_33200967/9929315
转载于:https://www.cnblogs.com/yeyupiaoling/p/7308461.html
Android的LitePal开源数据库框架学习笔记相关推荐
- Android客户端开发—开源数据库框架LitePal
LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,不使用SQL语句就可以完成创建表以及表单的CRUD操作,并且很轻量级,几乎零配置.(它将 ...
- Spring框架学习笔记,超详细!!(4)
Java小白开始学习Spring框架,一方面,跟着视频学习,并记录下学习笔记,方便以后复习回顾.另一方面,发布学习笔记来约束自己,学习路程还很遥远,继续加油坚持!!!希望能帮助到大家! 另外还有我的牛 ...
- 【Android】在Android上使用OrmLite数据库框架 之 基本用法
转载自:http://blog.csdn.net/oo8_8oo/article/details/7302156 官网:http://ormlite.com/ 官方帮助,目录: http://orml ...
- 27Vert.X框架学习笔记
vert.x框架学习笔记 文章目录 1 Vert.x简明介绍 1.1 Vert.x能干什么 1.2 Vert.x快速体验 1.3 Vert.x的简单介绍 1.4 Vert.x的一些优势 1.4.1 异 ...
- SpringMVC框架--学习笔记(上)
1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...
- mybatis框架--学习笔记(下)
上篇:mybatis框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81034021 8.高级映射: (1)一对一查询: ①使 ...
- mybatis框架--学习笔记(上)
使用JDBC操作数据库的问题总结: (1)数据库连接,使用时创建,不使用时立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 设想:使用数据库连接池管理数据库连接. (2) ...
- php框架费尔康,GitHub - majixian/study-phalcon: phalcon(费尔康)框架学习笔记
phalcon(费尔康)框架学习笔记 以实例程序invo为例(invo程序放在网站根目录下的invo文件夹里,推荐php版本>=5.4) 环境不支持伪静态网址时的配置 第一步: 在app\con ...
- Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )
Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...
最新文章
- 从零开始,教你征战Kaggle竞赛
- 百度java验证码不显示不出来,Java-使用百度链接时,遇到无法弹出用户登录框的问题...
- php作业案例10,5月23日作业——实例演示查询构造器中的10个最常用的方法
- studioone精调效果包_cnocr: 极简的中文OCR Python包
- 20155327第三周学习总结
- 计算机学3d建模吗,计算机三维建模与动画基础
- torch将多个tensor张量合并为一个张量,只提高迷你批次的纬度
- sprintf 、vsprintf 、_vsntprintf
- 【原创】大叔经验分享(11)python引入模块报错ImportError: No module named pandas numpy...
- 老版本iOS simulator链接
- Cisco路由器配置dhcp服务器
- 谷歌浏览器清除百度广告
- 学习CPP看过的博客
- 吴军三部曲见识(三) 谈谈见识
- 结婚时贴红“囍”字的来历
- d3.js画柱状图超详细教程
- 展锐平台PIN码输错三次后提醒PUK输入
- sql求中位数、四分位数
- Windows下NTFS连接点管理工具-junction工具说明
- StableLM(stablelm-tuned-alpha-7b)中文能力测试