# KotlinTools **Repository Path**: lulihu/kotlin-tools ## Basic Information - **Project Name**: KotlinTools - **Description**: kotlin 工具库,方便使用脚本快速运行一些工具 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-04-19 - **Last Updated**: 2025-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KotlinTools ## 介绍 kotlin 工具库,方便使用脚本快速运行一些工具 ## 使用方式 ```bash java -jar KotlinToolsCli.jar -s test.kts ``` 通过以上的命令就可以执行 `test.kts` 这个脚本文件,需要注意的是**java的版本必须 >= jdk21** ### 命令参数详解 * -s 脚本文件的绝对路径 (必填) * -l 脚本文件的额外依赖路径,如果不包含协议一律使用 file:// (可以为空) * -a 脚本文件的依赖的maven库,将从指定的存储库进行下载,格式::[:[:]]: (可以为空) ### 内置函数 #### useTransactions > jdbc 一次性链接和事务连接操作 示例: ```kotlin import cc.shacocloud.kotlin.tools.jdbc.JdbcProperties import cc.shacocloud.kotlin.tools.useTransactions val properties = JdbcProperties().apply { driverClassName = "xxxx" jdbcUrl = "xxx" username = "username" password = "password" } useTransactions(properties) { // 查询单个对象 val data1: Map = query( sql = "sql", args = arrayOf("参数...") ) // 查询单个对象,通过 RowsMapper 自行封装结果集 val data2: String = queryForRowsMapper( sql = "sql", args = arrayOf("参数...") ) { rs: ResultSet, rowNum: Int -> rs.getString(1) } // 查询列表数据,通过 RowsMapper 自行封装结果集 val dataList1: List = queryListForRowsMapper( sql = "sql", args = arrayOf("参数...") ) { rs: ResultSet, rowNum: Int -> rs.getString(1) } // 查询列表数据 val dataList2: List> = queryList( sql = "sql", args = arrayOf("参数...") ) } ``` #### useDataSource > 使用 jdbc 数据源,可以在数据源中操作事务或非事务操作 示例: ```kotlin import cc.shacocloud.kotlin.tools.jdbc.JdbcProperties import cc.shacocloud.kotlin.tools.useDataSource val properties = JdbcProperties().apply { driverClassName = "xxxx" jdbcUrl = "xxx" username = "username" password = "password" } useDataSource(properties) { // 使用事务 useTransactions { // TODO } // 不使用事务 useAutoCommit { // TODO } // 使用数据源链接 useConnection { // TODO } } ``` #### http > http 请求函数 示例: ```kotlin import cc.shacocloud.kotlin.tools.http http { // get 请求 val getResult = get( url = "请求地址", headers = mapOf("key" to "value"), // 请求头 level = HttpLoggingInterceptor.Level.BODY, // 打印的日志级别 interceptors = listOf() // 请求拦截器 ) // 发送请求 .send() // 转为 json 结果 .toJson( type = object : TypeReference>() {}, checkSuccess = false ) // post application/x-www-form-urlencoded;charset=utf-8 请求 val postResult = post( url = "请求地址", headers = mapOf("key" to "value"), // 请求头 body = mapOf("key" to "value"), // 请求体 level = HttpLoggingInterceptor.Level.BODY, // 打印的日志级别 interceptors = listOf() // 请求拦截器 ) // 发送请求 .send() // 转为 json 结果 .toJson( type = object : TypeReference>() {}, checkSuccess = false ) // post application/json;charset=utf-8 请求 val postJsonResult = postJson( url = "请求地址", headers = mapOf("key" to "value"), // 请求头 body = mapOf("key" to "value"), // 请求体 level = HttpLoggingInterceptor.Level.BODY, // 打印的日志级别 interceptors = listOf() // 请求拦截器 ) // 发送请求 .send() // 转为 json 结果 .toJson( type = object : TypeReference>() {}, checkSuccess = false ) // 自定义请求方式 val customResult = custom( url = "请求地址", method = "REPORT", headers = mapOf("key" to "value"), // 请求头 level = HttpLoggingInterceptor.Level.BODY, // 打印的日志级别 interceptors = listOf() // 请求拦截器 ) // 发送请求 .send() // 转为 json 结果 .toJson( type = object : TypeReference>() {}, checkSuccess = false ) // 其他的以此类推... } ``` ### 内置拓展函数 #### InputStream.csvParser > 将 InputStream 使用csv解析器解析 示例: ```kotlin import cc.shacocloud.kotlin.tools.csvParser import cc.shacocloud.kotlin.tools.csv.CsvReadConfig File("文件地址").inputStream().csvParser( charset = Charsets.UTF_8, // 字符编码 config = CsvReadConfig.DEFAULT // 解析配置 ) { // TODO } ``` #### Reader.csvParser > 将 Reader 使用csv解析器解析 示例: ```kotlin import cc.shacocloud.kotlin.tools.csv.CsvReadConfig import cc.shacocloud.kotlin.tools.csvParser InputStreamReader(File("文件地址").inputStream(), Charsets.UTF_8).csvParser( config = CsvReadConfig.DEFAULT // 解析配置 ) { // TODO } ```