<
Litepal
>
上一篇

Room
下一篇

Compose学习笔记 动画

Litepal

  1. 添加依赖
// https://github.com/guolindev/LitePal
implementation("org.litepal.guolindev:core:3.2.3")

找不到依赖的话 尝试添加以下仓库

repositories{
    maven("https://maven.aliyun.com/repository/public") // central仓和jcenter仓的聚合仓
}
  1. 创建数据库配置文件:在应用的 assets 目录下创建一个名为 litepal.xml 的文件
<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="YourDatabaseName" />
    <version value="1" />
    <!-- 在这里定义数据表映射类 -->
    <mapping class="com.example.test.litepal.Book" />
</litepal>
  1. 定义数据表模型类

注意,字段若有 List 需要使用 ArrayList

class Book(
    // 表字段
    val id: Long = 0, // id 不写也会自动生成, 主键 自增长
    @Column(unique = true)
    var name: String = "",
    var price: Double = 0.0,
    // 与其他表的关系
//    var category: Category
) : LitePalSupport()
  1. 初始化 LitePal
class App : Application() {

    override fun onCreate() {
        super.onCreate()
        LitePal.initialize(this)
    }

}
  1. 使用 LitePal 进行数据库操作
class MainActivity : AppCompatActivity() {

    private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        // 插入数据
        binding.tvInsert.setOnClickListener {
            val book = Book(
                name = "Android Programming",
                price = 29.99,
            )
            book.save()

            showText()
        }
        binding.tvInsert2.setOnClickListener {
            val nextInt = Random.nextInt(100)
            val book = Book(
                name = "Android Programming $nextInt",
                price = 29.99 + nextInt * 100,
            )
            book.save()

            showText()
        }

        // 查询数据
        binding.tvSelect.setOnClickListener {
            val books = LitePal.findAll(Book::class.java)
            val text = books.joinToString(", \n") { GsonUtils.toJson(it) }
            LogUtils.e(text)
            for (book in books) {
                // 处理每个书籍对象
            }

            showText()
        }

        // 更新数据
        binding.tvUpdate.setOnClickListener {
            val book = Book(
                price = 1239.99,
            )
//            book.update(20)
//            book.updateAll("id = 20") // 有效
//            book.updateAll("id = ?", "20") // 有效
//            book.updateAll("id % 2 = ?", "0") // 无效
            book.updateAll("id % 2 = 0") // 有效

            showText()
        }
        binding.tvUpdate2.setOnClickListener {
            val book = Book(
                name = "法外狂徒张三",
                price = 19.99,
            )
            book.update(1)

            showText()
        }

        // 删除数据
        binding.tvDelete.setOnClickListener {
            LitePal.deleteAll(Book::class.java, "price < ?", "30")

            showText()
        }
        binding.tvDeleteAll.setOnClickListener {
            LitePal.deleteAll(Book::class.java)

            showText()
        }

    }

    private fun showText() {
        val books = LitePal.findAll(Book::class.java)
        val text = books.joinToString(", \n") { GsonUtils.toJson(it) }
        binding.tv.text = text
    }

}
Top
Foot