(Kotlin调用Java类的例子)Kotlin语言写用Bee查询数据库的例子(多表关联查询)

205 篇文章 0 订阅
2 篇文章 0 订阅

用Kotlin语言写Bee查询数据库的例子(多表关联查询)

Tables表:

 Columns表:

package com.k.test

import org.teasoft.bee.osql.annotation.JoinTable;
import org.teasoft.bee.osql.annotation.JoinType;
import java.io.Serializable;

data class Tables(
var tableId: Int ?= null,
var tableName : String ?= null,
@JoinTable (mainField = "table_id",
subField = "table_id",
joinType = JoinType.JOIN
,subClass = "Columns"
)
var columns:List<Columns> ?= null,
//var columns:Columns ?= null,
): Serializable

package com.k.test

import java.io.Serializable;

data class Columns(
	var tableId: Int? = null,
	var columnId: Int? = null,
	var columnName: String? = null
) : Serializable


import com.k.test.Columns
import com.k.test.Tables
import org.teasoft.honey.osql.core.BeeFactory

fun main(){
	
val suid = BeeFactory.getHoneyFactory().suidRich
	println(" ------ query tables-------")
println(suid.select(Tables(tableId=1)))
	println("------query columns -------")
println(suid.select(Columns(tableId = 1)))
val moreTable = BeeFactory.getHoneyFactory().moreTable
println(moreTable.select(Tables(tableId = 1)))
}

日志:

 ------ query tables-------
[Bee] LoggerFactory Use the Logger is : org.teasoft.honey.logging.SystemLogger
[INFO] [Bee] ========= get the dbName from the Connection is :MySQL
[INFO] [Bee] select SQL: select table_id,table_name from tables where table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select table_id,table_name from tables where table_id=1
[INFO] [Bee]  | <--  select rows: 1
[Tables(tableId=1, tableName=t1, columns=null)]
------query columns -------
[INFO] [Bee] select SQL: select table_id,column_id,column_name from columns where table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select table_id,column_id,column_name from columns where table_id=1
[INFO] [Bee]  | <--  select rows: 1
[Columns(tableId=1, columnId=1, columnName=c1)]
[INFO] [Bee] select SQL: select tables.table_id,tables.table_name,columns.table_id,columns.column_id,columns.column_name from tables,columns where tables.table_id=columns.table_id and tables.table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select tables.table_id,tables.table_name,columns.table_id,columns.column_id,columns.column_name from tables,columns where tables.table_id=columns.table_id and tables.table_id=1
[INFO] [Bee]  | <--  ( select raw record rows: 1 )
[INFO] [Bee]  | <--  select rows: 1
[Tables(tableId=1, tableName=t1, columns=[Columns(tableId=1, columnId=1, columnName=c1)])]

下面讨论下,

//var columns:List<Columns> ?= null,
var columns:Columns ?= null,

用List和不用List的区别;

在Columns表添加一条记录:

在data class Tables里,修改以下两条语句

//var columns:List<Columns> ?= null,
var columns:Columns ?= null,

,然后运行:

 ------ query tables-------
[Bee] LoggerFactory Use the Logger is : org.teasoft.honey.logging.SystemLogger
[INFO] [Bee] ========= get the dbName from the Connection is :MySQL
[INFO] [Bee] select SQL: select table_id,table_name from tables where table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select table_id,table_name from tables where table_id=1
[INFO] [Bee]  | <--  select rows: 1
[Tables(tableId=1, tableName=t1, columns=null)]
------query columns -------
[INFO] [Bee] select SQL: select table_id,column_id,column_name from columns where table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select table_id,column_id,column_name from columns where table_id=1
[INFO] [Bee]  | <--  select rows: 2
[Columns(tableId=1, columnId=1, columnName=c1), Columns(tableId=1, columnId=2, columnName=C2)]
[INFO] [Bee] select SQL: select tables.table_id,tables.table_name,columns.table_id,columns.column_id,columns.column_name from tables,columns where tables.table_id=columns.table_id and tables.table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select tables.table_id,tables.table_name,columns.table_id,columns.column_id,columns.column_name from tables,columns where tables.table_id=columns.table_id and tables.table_id=1
[INFO] [Bee]  | <--  select rows: 2
[Tables(tableId=1, tableName=t1, columns=Columns(tableId=1, columnId=1, columnName=c1)), Tables(tableId=1, tableName=t1, columns=Columns(tableId=1, columnId=2, columnName=C2))]

用数据库客户端查询:

 得到两条记录, 和用Bee查询回来的是一样的.

有时候, 我们只想显示一条主数据,  当有需要时,点击再显示详情.  那这时, List就派上用场了.

在data class Tables里,使用语句:

var columns:List<Columns> ?= null,

运行:

 ------ query tables-------
[Bee] LoggerFactory Use the Logger is : org.teasoft.honey.logging.SystemLogger
[INFO] [Bee] ========= get the dbName from the Connection is :MySQL
[INFO] [Bee] select SQL: select table_id,table_name from tables where table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select table_id,table_name from tables where table_id=1
[INFO] [Bee]  | <--  select rows: 1
[Tables(tableId=1, tableName=t1, columns=null)]
------query columns -------
[INFO] [Bee] select SQL: select table_id,column_id,column_name from columns where table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select table_id,column_id,column_name from columns where table_id=1
[INFO] [Bee]  | <--  select rows: 2
[Columns(tableId=1, columnId=1, columnName=c1), Columns(tableId=1, columnId=2, columnName=C2)]
[INFO] [Bee] select SQL: select tables.table_id,tables.table_name,columns.table_id,columns.column_id,columns.column_name from tables,columns where tables.table_id=columns.table_id and tables.table_id=?   [values]: 1
[INFO] [Bee] select SQL:  ( ExecutableSql )
select tables.table_id,tables.table_name,columns.table_id,columns.column_id,columns.column_name from tables,columns where tables.table_id=columns.table_id and tables.table_id=1
[INFO] [Bee]  | <--  ( select raw record rows: 2 )
[INFO] [Bee]  | <--  select rows: 1
[Tables(tableId=1, tableName=t1, columns=[Columns(tableId=1, columnId=1, columnName=c1), Columns(tableId=1, columnId=2, columnName=C2)])]

一条主数据里,关联了一个List, 而List里有两条数据.

注: 从表用List类型, 从V1.9.8开始.

另外, 导入bee.jar, honey.jar(或maven方式),

bee.properties里配置数据库连接连接信息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值