// https://github.com/guolindev/LitePal
implementation("org.litepal.guolindev:core:3.2.3")
找不到依赖的话 尝试添加以下仓库
repositories{
maven("https://maven.aliyun.com/repository/public") // central仓和jcenter仓的聚合仓
}
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="YourDatabaseName" />
<version value="1" />
<!-- 在这里定义数据表映射类 -->
<mapping class="com.example.test.litepal.Book" />
</litepal>
注意,字段若有 List 需要使用 ArrayList
class Book(
// 表字段
val id: Long = 0, // id 不写也会自动生成, 主键 自增长
@Column(unique = true)
var name: String = "",
var price: Double = 0.0,
// 与其他表的关系
// var category: Category
) : LitePalSupport()
class App : Application() {
override fun onCreate() {
super.onCreate()
LitePal.initialize(this)
}
}
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
}
}