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
是在后面使用连接的时候用的到
在创建表的时候可以对表名字进行自定义,如果创建的时候没有写数据库的名字,name在创建表的时候就会默认时对象类的类名
创建表的时候使用以下方法进行创建数据库的表
SchemaUtils.create (Users, ClassesTable)
2. 对表里面新增数据
3.查询表
将数据查询出来后用.map()
方法放到里面List里面并返回
如果只想展示表中的几列的数据可以用.slice()
方法对数据进行切面
4. 更改表
更改表语句后会返回一个Int型的参数 1或0 来表示更改是否成功
5. 删除表
删除表里面的数据的话就比较简单了,直接用deleteWhere()
方法进行传入ID删除就行了
6.对数据进行连接查询
- 在进行内连接操作时,需要把对象类里面的外键加上
references
比如:val classId = (integer("classid") references ClassesTable.classNum).nullable()
- 然后再进行数据库操作的时候使用
innerJoin()
进行查询
注: 这种用法不需要设置外键
如果在对象类设置了外键的情况下,可以使用以下
join()
方法,在里面有一个joinType
他可以设置你的sql是什么连接,自我感觉这个比较好用,看个人喜好吧