一.基本知识点
1.采用ORMLite
- 它的英文全称是Object Relational Mapping,意思是对象关系映射
- ORMLite 支持很多的数据库类型
- 在Android中是SQLite,数据中的字段就是我们定义实体的成员变量。
- 官网https://ormlite.com/releases/
2.类与表的对应关系
- 类与表对应:成员变量与列对应
- 对象与行:将一个对象的成员变量存为一行
二.实训案例
1.创建一个安卓项目
2.在ORMLite官网下载安装包
3.导入ORMLite的依赖
-
右击导入的ORMLite
-
build.gradle文件中就会出现相应的语句
4.创建一个Student表对应一个实体类
(1)创建Student类
(2)定义与字段对应的成员变量
(3)定义构造方法和toString()方法
- 快捷键 Alt + insert
- 三个都要勾选
(4)代码提示
package net.yuanjing.omlitetest;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
//创建表名字,将Student类与Student表映射
@DatabaseTable(tableName = "Student")
public class Student {
@DatabaseField(columnName = "id", generatedId = true)
private int id;
@DatabaseField
private String name;
@DatabaseField
private String age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Student(int id, String name, String age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
5.数据库操作管理工具类-MyDatabaseHelper
(1)创建MyDatabaseHelper类
(3)继承OrmLiteSqliteOpenHelper
-
细化代码:
-
定义私有构造方法
-
重写两个方法onCreate()和onUpgrade()
(4)定义创建数据库时调用的方法
(5)代码提示
package net.yuanjing.omlitetest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import java.sql.SQLException;
public class MyDatabaseHelper extends OrmLiteSqliteOpenHelper {
public MyDatabaseHelper(Context context) {
super(context, "Student", null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Student.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
}
}
6.准备图片资源
7.主布局资源文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
tools:context=".MainActivity">
<EditText
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="105dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="42dp"
android:ems="10"
android:hint="请输入姓名"
android:inputType="textPersonName"
app:layout_constraintBottom_toTopOf="@+id/age"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView1"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="DuplicateIds" />
<TextView
android:id="@+id/textView1"
android:layout_width="28dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginBottom="10dp"
android:text="姓名"
app:layout_constraintBottom_toBottomOf="@+id/name"
app:layout_constraintEnd_toStartOf="@+id/name"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="DuplicateIds" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="23dp"
android:text="年龄"
app:layout_constraintBaseline_toBaselineOf="@+id/age"
app:layout_constraintEnd_toStartOf="@+id/age"
app:layout_constraintStart_toStartOf="parent" />
<EditText
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="18dp"
android:layout_marginBottom="59dp"
android:ems="10"
android:hint="请输入年龄"
android:inputType="textPersonName"
app:layout_constraintBottom_toTopOf="@+id/button1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.415"
app:layout_constraintStart_toEndOf="@+id/textView2"
app:layout_constraintTop_toBottomOf="@+id/name" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginTop="60dp"
android:layout_marginEnd="63dp"
android:text="查询"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/button1"
app:layout_constraintTop_toBottomOf="@+id/age" />
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="67dp"
android:layout_marginEnd="117dp"
android:layout_marginBottom="395dp"
android:text="确认"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/age" />
</androidx.constraintlayout.widget.ConstraintLayout>
8.主界面类MainActivity.java
(1)声明变量
(2)利用布局文件设置用户界面
(3)通过资源标识符获取控件实例
(4)实例化MyDatabaseHelper类
(5)注册插入按钮单击事件监听器
(6)注册查询按钮单击事件监听器
(7)代码提示
package net.yuanjing.omlitetest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.query.In;
import java.sql.SQLException;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private EditText name;//用户输入的姓名
private EditText age;//用户输入的年龄
private Button insert;//插入按钮
private Button inquiry;//查询按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//利用布局资源文件设置用户界面
setContentView(R.layout.activity_main);
//通过资源标识符获取控件实例
name = findViewById(R.id.name);
age = findViewById(R.id.age);
insert = findViewById(R.id.button1);
inquiry = findViewById(R.id.button2);
//初始化
MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(MainActivity.this);
//插入事件按钮监听事件
insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//获取一个具有增删改查方法对象,Dao对象
Dao<Student, Integer> dao = myDatabaseHelper.getDao(Student.class);
//创建Student类对象,传入用户输入数据
Student student = new Student();
student.setName(name.getText().toString());
student.setAge(age.getText().toString());
//插入数据
dao.create(student);
Toast.makeText(MainActivity.this,"数据插入成功",Toast.LENGTH_LONG).show();
} catch (SQLException e) {
e.printStackTrace();
}
}
});
//查询事件按钮监听事件
inquiry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//获取一个具有增删改查方法对象,Dao对象
Dao<Student, Integer> dao = myDatabaseHelper.getDao(Student.class);
List<Student> student = dao.queryForAll();
Toast.makeText(MainActivity.this,"查询的结果为:" + student.get(0).toString(),Toast.LENGTH_LONG).show();
} catch (SQLException e) {
}
}
});
}
}