Kotlin 一键Sqlitel生成Kotlin实体类

由于创作需要,所以自己写了一个Sqlite一键转Kotlin实体类的代码,方便以后使用!
以此记录!
maven

<!--sqlite 版本3.7.2   -->
	 <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.7.2</version>
        </dependency>

代码

   //sqlite生成kotlin实体类
    fun getBean() {
        Class.forName("org.sqlite.JDBC");//加载驱动
        val connection: Connection=DriverManager.getConnection("jdbc:sqlite:sample.db")//设置sqlite连接字符串
        var statement=connection!!.createStatement()
        val connection1: Connection=DriverManager.getConnection("jdbc:sqlite:sample.db")
        var statement1=connection1!!.createStatement()
        var tableRs = statement1!!.executeQuery("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name")
        while (tableRs!!.next()) {
            var rs = statement!!.executeQuery("PRAGMA TABLE_INFO (${tableRs.getString("name")})")
            var sBuild = StringBuilder("package cn.xstm.gim.dataBean\n\n")//包名可以在这里设置
            sBuild.append("import java.util.*")
            sBuild.append("\n\n")
            sBuild.append("/**\n\t*自动生成,请检查格式 \n*/")
            sBuild.append("\n\n")
            sBuild.append("class ${Utils_Tool.firstBig(tableRs!!.getString("name"))} {\n")
            while (rs!!.next()) {
                sBuild.append("\tvar ${rs!!.getString("name")}:${getSqliteType(rs!!.getString("type"), rs!!.getInt("notnull"))}\n")
            }
            sBuild.append("\n}")
            val file = File("src/main/java/cn/xstm/gim/dataBean/${firstBig(tableRs!!.getString("name"))}.kt")//文件生成路径可以再这里更改
            println(file.absolutePath)
            if (!file.exists()) {
                file.createNewFile()
            }
            val fileWriter = FileWriter(file)
            fileWriter.write(sBuild.toString())
            fileWriter.flush()
            fileWriter.close()

        }
    }

    //开头字符大写
    fun firstBig(name:String): String {
        return name.substring(0, 1).toUpperCase() + name.substring(1);
    }

    //获取sqlite对应的kotlin类型
    fun getSqliteType(type:String,notNull:Int):String{
        return if(type.indexOf("INT")!=-1){
            "Int${if(notNull==1) "=0" else{"?=null"}}"
        }else if(type.equals("TIME")||type.equals("DATE")||type.equals("DATETIME")){
            "Date${if(notNull==1)"=Date()" else{"?=null"}}"
        }else{
            "String${if(notNull==1)"=\"\"" else{"?=null"}}"
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值