前言:
LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表和増删改查的操作。
1.首先app/build.gradle添加依赖
implementation ‘org.litepal.android:java:3.0.0’
2.配置初始化LitePal
(1).AndroidManifest清单文件中添加
<manifest>
<application
android:name=”org.litepal.LitePalApplication”
…
>
…
</application>
</manifest>
(2).如果有属于自己的Application则继承LitePalApplication或者添加如下代码(2选一即可)
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
3.在app/src/main新建assets/litepal.xml(与java目录平级),如下图
并添加如下代码:
<?xml version=”1.0″ encoding=”utf-8″?>
<litepal>
<!–
定义应用程序的数据库名称。默认情况下,每个数据库名称应以.db结尾。
如果您没有使用.db命名数据库端,LitePal会自动为您添加后缀。–>
<dbname value=”LitePalDemo” />
<!–
定义数据库的版本。每次要升级数据库时,版本标记都会有所帮助。
修改您在映射标记中定义的模型,只需将版本值加1,即可自动处理数据库升级而无需担心。–>
<version value=”1″ />
<!–
定义.db文件的位置。“internal”表示.db文件将存储在内部存储的数据库文件夹中,无人可以访问。
“external”表示.db文件将存储在主外部存储设备上目录的路径中,其中应用程序可以放置其拥有的每个人都
可以访问的永久文件。“内部”将作为默认值。 例如:
<storage value =“external”/>–>
<list>
<!–注册新闻表–>
<mapping class=”com.helloword.feng.NewsBean” />
</list>
</litepal>
4.创建Bean实体类并继承LitePalSupport
public class NewsBean extends LitePalSupport { private String createTime; private String title; private String content; private int number; public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } @Override public String toString() { return "NewsBean{" + "createTime='" + createTime + '\'' + ", title='" + title + '\'' + ", content='" + content + '\'' + ", number=" + number + '}'; } }
(2).xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/editTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="46dp" android:hint="存储的数据 标题" android:paddingStart="10dp" android:paddingEnd="15dp" android:textColor="@color/black" android:background="#00000000"/> <EditText android:id="@+id/editContent" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="46dp" android:hint="存储的数据 内容" android:paddingStart="10dp" android:paddingEnd="15dp" android:textColor="@color/black" android:background="#00000000"/> <TextView android:id="@+id/litePalAdd" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/design_default_color_secondary" android:minHeight="46dp" android:text="数据库-- 增加" android:layout_marginTop="5dp" android:textColor="@color/white" android:gravity="center" android:textSize="20sp"/> <TextView android:id="@+id/litePalAddList" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/design_default_color_secondary" android:minHeight="46dp" android:text="数据库-- 批量增加" android:layout_marginTop="15dp" android:textColor="@color/white" android:gravity="center" android:textSize="20sp"/> <TextView android:id="@+id/litePalDelete" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/design_default_color_secondary" android:layout_marginTop="15dp" android:minHeight="46dp" android:text="数据库-- 删除" android:textColor="@color/white" android:gravity="center" android:textSize="20sp"/> <TextView android:id="@+id/litePalChange" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/design_default_color_secondary" android:layout_marginTop="15dp" android:minHeight="46dp" android:text="数据库-- 修改" android:textColor="@color/white" android:gravity="center" android:textSize="20sp"/> <TextView android:id="@+id/litePalQuery" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/design_default_color_secondary" android:layout_marginTop="15dp" android:minHeight="46dp" android:text="数据库--查询" android:textColor="@color/white" android:gravity="center" android:textSize="20sp"/> </LinearLayout>
(3).Acitivty
package com.zdmtech.androidlitepal; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.zdmtech.androidlitepal.moudle.NewsBean; import org.litepal.LitePal; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Context mContext; private TextView litePalAdd, litePalAddList, litePalDelete, litePalChange, litePalQuery; private EditText editTitle, editContent; private int litePallIndex = 1; private String name = ""; private String content = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; initView(); } public void initView() { editTitle = findViewById(R.id.editTitle); editContent = findViewById(R.id.editContent); litePalAdd = findViewById(R.id.litePalAdd); litePalAddList = findViewById(R.id.litePalAddList); litePalDelete = findViewById(R.id.litePalDelete); litePalChange = findViewById(R.id.litePalChange); litePalQuery = findViewById(R.id.litePalQuery); litePalAdd.setOnClickListener(this); litePalAddList.setOnClickListener(this); litePalDelete.setOnClickListener(this); litePalChange.setOnClickListener(this); litePalQuery.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.litePalAdd: showToast("添加一条数据"); name = editTitle.getText().toString().trim(); content = editContent.getText().toString().trim(); NewsBean newsBean = new NewsBean(); newsBean.setTitle(name); newsBean.setContent(content); newsBean.setTitle(name); newsBean.setCreateTime("2021-02-21 : 17:32"); // newsBean.save() if (newsBean.save()) { showToast("保存成功"); } else { showToast("保存失败"); } break; case R.id.litePalAddList: showToast("添加多条数据"); //批量添加 List<NewsBean> list = new ArrayList<>(); //②:一次性添加5条 for (int i = 0; i < 5; i++) { litePallIndex = litePallIndex + 1; NewsBean listBean = new NewsBean(); listBean.setCreateTime("2020-02-21" + litePallIndex); listBean.setTitle("张三" + litePallIndex); listBean.setContent("李四" + litePallIndex); list.add(listBean); } LitePal.saveAll(list); break; case R.id.litePalDelete: showToast("删除一条数据"); // //删除单个记录,id=1 // LitePal.delete(NewsBean.class, position); // //删除数据库中NewsBean表的所有记录 // LitePal.deleteAll(NewsBean.class); // //删除数量大于100的 // LitePal.deleteAll(NewsBean.class, "number > ?", "100"); // //删除标题为张三的 LitePal.deleteAll(NewsBean.class, "title = ?", "张三2"); // //删除标题为张三,内容为李四的记录 // LitePal.deleteAll(NewsBean.class, "title = ? and content = ?", "张三", "李四"); break; case R.id.litePalChange: showToast("修改一条数据"); //①:修改ID为1的记录,并将标题和内容分别设置为张三、李四 // NewsBean newsBean = LitePal.find(NewsBean.class, 1); // newsBean.setTitle("张三"); // newsBean.setContent("李四"); // if (newsBean.save()) { // Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show(); // this.finish(); // } else { // Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show(); // } // //如下方式同上 // NewsBean newsBean1 = new NewsBean(); // newsBean1.setTitle("张三"); // newsBean1.setContent("李四"); // //直接更新id为1的记录 // newsBean1.update(1); // //③:修改ID为1的记录 NewsBean newsBean2 = new NewsBean(); //更新所有title为张三6的记录,更新为李四 newsBean2.setTitle("李四"); newsBean2.updateAll("title = ?", "张三6"); // //④:将title为张三,content为李四的数据修改为王五、赵六 // NewsBean newsBean3 = new NewsBean(); // newsBean3.setTitle("王五"); // newsBean3.setContent("赵六"); // newsBean3.setContent(releaseContent.getText().toString()); // newsBean3.updateAll("title = ? and content = ?", "张三", "李四"); break; case R.id.litePalQuery: showToast("查询"); //①:查询表中所有的记录,返回的是泛型为NewsBean的List集合 List<NewsBean> newsBeanList = LitePal.findAll(NewsBean.class); for (int i = 0; i < newsBeanList.size(); i++) { Log.e("++++++", "标题 = " + newsBeanList.get(i).getTitle()); } break; } } // private void queryNews() { // //①:查询表中所有的记录,返回的是泛型为NewsBean的List集合 // List<NewsBean> newsBeanList = LitePal.findAll(NewsBean.class); // // //②:查找表id为1的记录 // NewsBean newsBean = LitePal.find(NewsBean.class, 1); // // //③:获取表中的第一条数据与最后一条数据 // NewsBean firstNews = LitePal.findFirst(NewsBean.class); // NewsBean latNews = LitePal.findLast(NewsBean.class); // // //④:查询表中的第5、10、15条数据 // List<NewsBean> newsList1 = LitePal.findAll(NewsBean.class, 5, 10, 15); // //或者定义一个数组 // long[] ids = new long[]{5, 10, 15}; // List<NewsBean> newsList2 = LitePal.findAll(NewsBean.class, ids); // // //⑤:查找title为张三的记录,并且以时长作排序(按时间desc倒序 asc 正序),where()方法接收任意个字符串参数, // //其中第一个参数用于进行条件约束,从第二个参数开始,都是用于替换第一个参数中的占位符的。那这个where()方法就对应了一条SQL语句中的where部分。 // List<NewsBean> movies = LitePal.where("title = ?", "张三"). // order("time desc").find(NewsBean.class); // //将查询出的新闻按照发布的时间倒序排列,只要title和content这两列数据,即最新发布的新闻放在最前面,那就可以这样写: // List<NewsBean> newsList = LitePal.select("title", "content") // .where("title > ?", "张三") // .order("time desc").find(NewsBean.class); // //设置查询的数量与偏移量 // List<NewsBean> newsBeans = LitePal.select("title", "content") // .where("title > ?", "张三") // .order("time desc") // .limit(30)//只查询前面30条 // .offset(20)//分页查询,每次查20条 // .find(NewsBean.class); // } // // /** // * 异步查询 // * 默认情况每个数据库操作都在主线程上。如果您的操作可能花费很长时间则需要使用异步操作。 // * Litepal支持对所有CRUD方法执行异步操作。 // */ // private void syncQueary() { // //1、 异步查询示例 // //使用findallasync() 代替 findall() ,然后调用 listen() 方法,查询完成就会回调onFinish()方法 // LitePal.findAllAsync(NewsBean.class).listen(new FindMultiCallback<NewsBean>() { // @Override // public void onFinish(List<NewsBean> allSongs) { // //查询结果 // } // }); // //2、异步保存示例 // NewsBean newsBean = new NewsBean(); // newsBean.setTitle("张三"); // newsBean.setContent("李四"); // newsBean.saveAsync().listen(new SaveCallback() { // @Override // public void onFinish(boolean success) { // } // }); // } //toast private void showToast(String content) { Toast.makeText(mContext, content, Toast.LENGTH_SHORT).show(); } }
此时简单的增删改查就写好了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119187.html