1、需求 2、文件内容 3、代码如下 4、截图如下
1、将程序中的配置文件写入到Mysql,便于修改配置 2、application.conf只要写mysql的信息
1、application.conf 放入Mysql的信息 2、webConfig.scala 获取变量参数 3、DBHelper.scala 读取Mysql数据 4、pom文件.xml
application.conf
mysql { logic { url = "jdbc:mysql://xxx.xxx.xxx.xxx/user_privileges" properties { user = "xxx" password = "xxx" serverTimezone = UTC } } }WebConfig.scala
package com.xiaohui.tools import java.util.Properties import com.typesafe.config.{Config, ConfigFactory} object WebConfig { private val conf: Config = ConfigFactory.load() val MYSQL_LOGIC_URL = conf.getString("mysql.logic.url") val MYSQL_LOGIC_PROPERTIES = propsFromConfig(conf.getConfig("mysql.logic.properties")) val publicTableList=DBHelper.getAllPublicTable var DRUID_INDEXER ="" var KAFKA_BROKER_LIST ="" var ZOOKEEPER_CONNECT ="" var HDFS_MASTER ="" var HBASE_URL ="" var HDFS_REP ="" var REDIS_CLUSTER_CONNECT ="" var ZOOKEEPER_OFFSET="" var SDK_APPKEY="" var MYSQL_BI_URL="" if(publicTableList.nonEmpty){ for (publicTable <- publicTableList){ publicTable.name match { case "druid_indexer" => DRUID_INDEXER=publicTable.details; case "kafka_broker_list" => KAFKA_BROKER_LIST=publicTable.details; case "zookeeper_connect" => ZOOKEEPER_CONNECT=publicTable.details; case "hdfs_master" => HDFS_MASTER=publicTable.details; case "hbase_url" => HBASE_URL=publicTable.details; case "hdfs_repository" => HDFS_REP=publicTable.details; case "redis_cluster_connect" => REDIS_CLUSTER_CONNECT=publicTable.details; case "mysql_bi_url" => MYSQL_BI_URL=publicTable.details; case "zookeeper_offset" =>ZOOKEEPER_OFFSET=publicTable.details; case "sdk_appkey" =>SDK_APPKEY=publicTable.details; case _ => null } } } //读取application中的配置文件 private def propsFromConfig(config: Config): Properties = { import scala.collection.JavaConversions._ val props = new Properties() val map: Map[String, Object] = config.entrySet().map({ entry => entry.getKey -> entry.getValue.unwrapped() })(collection.breakOut) props.putAll(map) props } def main(args: Array[String]) { val set = Set(KAFKA_BROKER_LIST ,ZOOKEEPER_CONNECT ,HDFS_MASTER,HBASE_URL,HDFS_REP,REDIS_CLUSTER_CONNECT, ZOOKEEPER_OFFSET,SDK_APPKEY ) set.foreach(x=>println(x)) } }DBHelper.scala
package com.xiaohui.tools import java.sql.ResultSet import java.util.{List => JList, Properties} import javax.sql.DataSource import com.mchange.v2.c3p0.DataSources import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper import org.skife.jdbi.v2.sqlobject.{Bind, SqlQuery} import org.skife.jdbi.v2.tweak.ResultSetMapper import org.skife.jdbi.v2.{DBI, StatementContext} import scala.collection.JavaConversions._ //映射类,为了返回对象获取属性 case class PublicTable(name: String, details: String) class PublicTableMapper extends ResultSetMapper[PublicTable] { override def map(i: Int, resultSet: ResultSet, statementContext: StatementContext): PublicTable = PublicTable( name = resultSet.getString("name"), details = resultSet.getString("details") ) } //通过注解@RegisterMapper方法,将PublicTableDao返回的结果和PublicTableMapper中的属性联合在一起 @RegisterMapper(Array(classOf[PublicTableMapper])) trait PublicTableDao{ @SqlQuery("select * from service_config_public_table where name=:name") def getAllByName(@Bind("name") name:String):JList[PublicTable] @SqlQuery("select * from service_config_public_table") def getAll:JList[PublicTable] } object DBHelper { val props: Properties = WebConfig.MYSQL_LOGIC_PROPERTIES val ds: DataSource = DataSources.pooledDataSource(DataSources.unpooledDataSource(WebConfig.MYSQL_LOGIC_URL, props)) lazy val dbi: DBI = new DBI(ds) lazy val publicTableDao = dbi.onDemand(classOf[PublicTableDao]) def getAllPublicTable: List[PublicTable] = publicTableDao.getAll.toList def getAllPublicTableByName(name:String): List[PublicTable] = publicTableDao.getAllByName(name).toList }pom文件.xml
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency>如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!