Exposed数据库连接以及用法

Exposed数据库连接以及用法

这是Exposed的官方文档,也可以直接去 官网查看

数据库连接

官方提供了几个连接数据源 我用的就是mysql连接

  • PostgreSQL

    Database.connect("jdbc:postgresql://localhost:12346/test", driver = "org.postgresql.Driver", 
                     user = "root", password = "your_pwd")  
    //Gradle
    compile("org.postgresql:postgresql:42.2.2")  
    
  • 使用 pgjdbc-ng JDBC 驱动程序的 PostgreSQL

    Database .connect( " jdbc:pgsql://localhost:12346/test " , driver =  " com.impossibl.postgres.jdbc.PGDriver " , 
                     user =  " root " , password =  " your_pwd " )  
     // Gradle 
    compile( " com.impossibl.pgjdbc-ng ”、“ pgjdbc-ng ”、“ 0.8.3 ”)  
    
  • MySQL/MariaDB

    Database .connect( " jdbc:mysql://localhost:3306/test " , driver =  " com.mysql.jdbc.Driver " , 
                     user =  " root " , password =  " your_pwd " )  
     // Gradle 
    compile( " mysql: mysql-connector-java:5.1.48 " )
    
  • 带有最新 JDBC 驱动程序 + Hikari 池的 MySQL/MariaDB

    val config = HikariConfig().apply {
        jdbcUrl         = "jdbc:mysql://localhost/dbname"
        driverClassName = "com.mysql.cj.jdbc.Driver"
        username        = "username"
        password        = "secret"
        maximumPoolSize = 10
    }
    val dataSource = HikariDataSource(config)
    Database.connect(dataSource)
    // Gradle
    implementation "mysql:mysql-connector-java:8.0.19"
    implementation "com.zaxxer:HikariCP:3.4.2"
    
  • Oracle

    Database.connect("jdbc:oracle:thin:@//localhost:1521/test", driver = "oracle.jdbc.OracleDriver", 
                     user = "root", password = "your_pwd")  
    //Gradle
    // Oracle jdbc-driver should be obtained from Oracle maven repo: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
    
  • SQLite

    // In file
    Database.connect("jdbc:sqlite:/data/data.db", "org.sqlite.JDBC")  
    // In memory
    Database.connect("jdbc:sqlite:file:test?mode=memory&cache=shared", "org.sqlite.JDBC")  
    // For both: set SQLite compatible isolation level, see 
    // https://github.com/JetBrains/Exposed/wiki/FAQ
    TransactionManager.manager.defaultIsolationLevel = 
        Connection.TRANSACTION_SERIALIZABLE
        // or Connection.TRANSACTION_READ_UNCOMMITTED
    //Gradle
    compile("org.xerial:sqlite-jdbc:3.30.1")  
    
  • H2

    // Database in file, needs full path or relative path starting with ./
    Database.connect("jdbc:h2:./myh2file", "org.h2.Driver")
    // In memory
    Database.connect("jdbc:h2:mem:regular", "org.h2.Driver")  
    // In memory / keep alive between connections/transactions
    Database.connect("jdbc:h2:mem:regular;DB_CLOSE_DELAY=-1;", "org.h2.Driver")  
    //Gradle
    compile("com.h2database:h2:1.4.199")  
    
  • SQL Server

    Database.connect("jdbc:sqlserver://localhost:32768;databaseName=test", "com.microsoft.sqlserver.jdbc.SQLServerDriver", 
                     user = "root", password = "your_pwd")  
    //Gradle
    compile("com.microsoft.sqlserver:mssql-jdbc:6.4.0.jre7")  
    

1. 创建表

​ 使用DSL进行数据库操作时需要创建两个数据库表Users和Classes:

注:这里的references是在后面使用连接的时候用的到

image

在创建表的时候可以对表名字进行自定义,如果创建的时候没有写数据库的名字,name在创建表的时候就会默认时对象类的类名

image

创建表的时候使用以下方法进行创建数据库的表

SchemaUtils.create (Users, ClassesTable)

2. 对表里面新增数据

image

3.查询表

将数据查询出来后用.map()方法放到里面List里面并返回

image

如果只想展示表中的几列的数据可以用.slice()方法对数据进行切面

image

4. 更改表

更改表语句后会返回一个Int型的参数 1或0 来表示更改是否成功

image

5. 删除表

删除表里面的数据的话就比较简单了,直接用deleteWhere()方法进行传入ID删除就行了

image

6.对数据进行连接查询

  1. 在进行内连接操作时,需要把对象类里面的外键加上references 比如:val classId = (integer("classid") references ClassesTable.classNum).nullable()
  2. 然后再进行数据库操作的时候使用innerJoin() 进行查询

注: 这种用法不需要设置外键

image

如果在对象类设置了外键的情况下,可以使用以下join()方法,在里面有一个joinType 他可以设置你的sql是什么连接,自我感觉这个比较好用,看个人喜好吧

image

posted @ 2021-12-23 17:32  Primary丶  阅读(453)  评论(0编辑  收藏  举报