由于创作需要,所以自己写了一个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"}}"
}
}