库链 dbchain-java-client、sm2-java-lib 是库链客户端的 Java 实现。利用 dbchain-java-client、sm2-java-lib, 开发者们可以快速启动一个库链项目。
库链 dbchain-java-client、sm2-java-lib 提供了如下功能:
- 随机生成 DBChainKey(包含了助记词、密钥对)
- 导入助记词生成 DBChainKey
- 请求一个积分、获取积分数量
- 插入一行数据到表里
- 冻结表中的一行数据
- 获取表中拥有访问权限的所有行
- 按字段值搜索行/记录
- 打包消息(将多个操作放在一个交易里)
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}dependencies {
implementation 'com.github.dbchaincloud:dbchain-java-client:lastTag'
}dependencies {
implementation 'com.github.dbchaincloud:sm2-java-lib:lastTag'
}dependencies {
implementation('com.github.dbchaincloud:sm2-java-lib:lastTag') {
exclude group: 'org.bouncycastle', module: 'bcprov-jdk15to18'
}
}// 控制台中创建数据库后,获取 appCode、baseUrl、chainId
// LogImpl 自定义实现日志输出
val appCode = "Your AppCode"
val baseUrl = "Your BaseUrl"
val chainId = "Your ChainId"
val debug = BuildConfig.DEBUG
com.gcigb.dbchain.init(
appCodeParameter = appCode,
baseUrlParameter = baseUrl,
chainIdParameter = chainId,
dbChainEncryptParameter = SM2Encrypt(),
iLogParameter = LogImpl(),
isDebug = debug,
)withDBChainKey(dbChainKey)val dbChainKey = generateMnemonic()val list = listOf(
"tooth",
"source",
"tiny",
"frost",
"biology",
"island",
"tent",
"alien",
"sure",
"easily",
"fancy",
"roast"
)
val dbChainKey = importMnemonic(list)val requestAppUser = requestAppUser()
// 成功之后,需要等待几秒,积分才能到账
val result = requestAppUser.isSuccessval tokenAmount = getToken(address)val title = "世界上最好的语言是什么"
val body = "当然是Java"
val map = hashMapOf("title" to title, "body" to body)
insertRow("blogs",map)// 冻结 blogs 表中 id 为 1 的一行数据
freezeRow("blogs", "1")val tableName = "blogs"
val queriedArray = QueriedArray(table = tableName)
querier(queriedArray)val tableName = "blogs"
val queriedArray = QueriedArray(table = tableName).findById("3")
querier(queriedArray)val tableName = "blogs"
val queriedArray = QueriedArray(table = tableName).findEqual("title","世界上最好的语言是什么")
querier(queriedArray)// 此示例将 3 个操作打包到一个交易里,要么都成功,要么都失败
// 插入了两行数据,冻结了一行 id 为 2 的数据
val tableName = "blogs"
val messageList = newMessageList().apply {
add(createInsertMessage(tableName, mapOf("title" to "第一个博客", "body" to "第一个博客正文")))
add(createInsertMessage(tableName, mapOf("title" to "第二个博客", "body" to "第二个博客正文")))
add(createFreezeMessage(tableName, "2"))
}
handleBatchMessage(messageList)