KormSession 初始化

本文提供KormSession利用Druid作为数据连接池的说明

    var dbURL = "jdbc:mysql://a.com:3306/test?useUnicode=true&characterEncoding=UTF-8"
    var userName = "root"
    var password = "root"


    fun getDB(): KormSqlSession {
        var dds = DruidDataSource()
        dds.url = dbURL
        dds.username = userName
        dds.password = password
        return KormSqlSession(dds)
    }

    @Test
    fun deleteEntity() {
        val tb = TestBook()
        tb.testId = "dd"
        getDB().delete(tb)
    }

下面的实例中提到的getDB()方法都是从上面的说明中来的。

场景一

我们有3个数据源,分别为日志库、业务库、账务库。

1、创建数据库连接

 fun getDB(): KormSqlSession {
        val ddsLog = DruidDataSource() //日志库
        ddsLog.url = dbURL
        ddsLog.username = userName
        ddsLog.password = password

        val ddsBiz=DruidDataSource() //业务库
        val ddsBilling=DruidDataSource() //账务库


        val kss = KormSqlSession()
        //设置业务库为默认数据源
        kss.setDefaultDataSource(ddsBiz)
        //设置其他两个数据源
        kss.addDataSource("log", ddsLog)
        kss.addDataSource("billing", ddsBilling)
        return kss
    }

可以做如下定义分别使用3个库。

//设置Logs 的数据源
@DataSource("log")
class Logs: EntityBase(){}

//设置账务库 的数据源
@DataSource("billing")
class Billing: EntityBase(){}


//业务库,不使用@DataSource,使用默认数据源
class Biz: EntityBase(){}

场景二、

我们有一个数据源,但是读写分离,一主两从。

1、创建数据库连接

  fun getDB(): KormSqlSession {
        val dds = DruidDataSource()
        dds.url = dbURL
        dds.username = userName
        dds.password = password

        val ddsRead1 = DruidDataSource()
        val ddsRead2 = DruidDataSource()

        val kss = KormSqlSession()
        kss.setDefaultDataSource(dds)//读写
        kss.addDataSource("default:read1", ddsRead1)//读
        kss.addDataSource("default:read2", ddsRead2)//读
        kss.addDataSource("default:master", dds) //写
        return kss
    }

2、使用

select使用读的连接源,随机选一个。

insert、update、delete使用写的连接源。

如果只设置了DefaultDataSource,那么读写都使用。

说明

@DataSource:指定了当前实体在执行SQL时使用的数据源。

命名规则:

1、不使用@DataSource,使用名为“defaultDataSource“的数据源

2、使用@DataSource,指定不同的数据源

3、区分主从(读写分离):在定义数据库连接时通过名称进行区分

“default:read” : default的从库

"default:slave" :default的从库

“default:master” : default的写库

“default:write” : default的写库

“default”:default的读写库


“log:read” :log数据源的读库

“log:slave” :log数据源的读库

“log:master” :log数据源的写库

“log:write” :log数据源的写库

“log” :log数据源的读写库

results matching ""

    No results matching ""