基于HikariCP的一款连接池插件。
较大程度上方便了开发者进行相关的数据库操作。
1.使用Java Bean更新相关数据库信息;
2.可通过yml配置将数据库信息封装成对象并返回;
3.支持通过文件来进行MySql相关操作(例如update,select等);
4.使用SqlUtil工具对象,相关查询、修改、插入等操作仅需一行代码;
5.支持自动读取数据库信息;
6.连接池信息查询等;
7.Json数据存取,String数据存取;
8.序列化与反序列化对象为Json数据并更新;
9.使用JavaBean来更新Json数据至数据库;
10.实现完全通过配置进行数据库操作(推荐使用);
- 当使用该插件作为前置时,请在plugin.yml中添加依赖: "depend: [PoolSeat]"
- 您需要封装的类必须拥有一个无参构造器;
- 您需要有一个所有字段和数据库字段所匹配的类(若字段名不匹配可以配置映射表)来进行相关的数据封装;
- 您需要配置相关映射信息;
- 使用插件前,您需要准备两个yml文件:
- 类映射文件,格式如下:
类名:
path: 类的路径
table: 所对应的数据库表
reflectMap:- 'column:数据库字段名<->bean:类字段名'
- 例如:
GlobalPlayer: path: com.bc.pokerankpro.rankbattle.domain.player.GlobalPlayer table: player_data reflectMap: - 'column:id<->bean:name' - 'column:uuid<->bean:uuid' - 'column:rep_credit<->bean:repCredit' - 'column:cre_update_time<->bean:creUpdateDate' - 'column:season<->bean:season' - 'column:last_match<->bean:lastMatch' - 'column:cre_update_type<->bean:creUpdateType' - 'column:match_time<->bean:matchTime' - 'column:last_login<->bean:lastLoginDate' - 'column:match_data<->bean:matchData'
- 例如:
- 方法文件,格式如下
操作名(自取,唯一):
cmd: "数据库语句,如select * from player where uuid=?;"
return: 返回类型,类地址,String与Player类型特殊例外可直接写String和Player
parameters:- '参数,对齐语句中的?号,此处对应uuid后的?号'
- 如果想要将某个字段转换成Bukkit的Player/OfflinePlayer:
操作名(自取,唯一):
cmd: "数据库语句,如select * from player where uuid=?;"
column: "数据库中用于转换的字段名,例如uuid"
type: "UUID/NAME(是名称转换或者是UUID转换)"
return: "Player"(此处必填Player,否则无法正常获取)
parameters:- '参数,对齐语句中的?号,此处对应uuid后的?号'
- 如果想使用JavaBean更新数据库:
updateGlobalPlayer:
#此处变量对应为 数据库字段名 ,非 类字段名
cmd: "update player_data set season=<season> where uuid=<uuid>;"- 例如:
#具体需要哪些字段配置,看你调用的方法,以下配置仅供参考. selectAllGlobalPlayer: cmd: "select * from player_data;" parameters: [] return: com.bc.pokerankpro.rankbattle.domain.player.GlobalPlayer #查询玩家并封装 selectPlayer: #指令集 cmd: "select * from player_data where id=?;" #字段名 column: "uuid" #类型: UUID / NAME type: UUID #参数集 parameters: - 'seeiil' #该类型可直接写 Player(返回为:Player或OfflinePlayer) return: Player updateGlobalPlayer: #此处变量使用 <数据库字段> cmd: "update player_data set season=<season> where uuid=<uuid>;" selectStringData: #指令集 cmd: "select * from player_data;" #字段名 column: "uuid" parameters: [] #String类型可以为“String”或“java.lang.String” return: "java.lang.String" #使用yml更新json数据,会将整个javaBean转换为json数据,存入相应的字段中; #想要使用当前带入的bean中的某个字段作为条件,变量使用 <数据库字段>; updateJsonData: #带入类的json变量为 <#object_json_String#> cmd: "update player_data set json_data = <#object_json_String#> where uuid = <uuid>;" #查询json数据并以实体返回 selectJsonGlobalPlayerData: #指令集 cmd: "select * from player_data where uuid=?;" #字段名 column: "json_data" parameters: - '6dcdb469-a14a-39cd-8e3d-76d0151164b6' #String类型可以为“String”或“java.lang.String” return: "com.bc.pokerankpro.rankbattle.domain.player.GlobalPlayer"
- 注意:如果你希望将JavaBean转换为指定方法,请在语句中使用<#object_json_String#>来替换将要被写入的json数据
- 例如:update player_data set json_data = <#object_json_String#> where uuid = <uuid>;
- 则是将您在代码中带入的Object转换为Json数据后存入与Object中对应的uuid字段的记录中;
- 同时: 您在更新语句中的所有bean字段变量均使用数据库中所对应的字段进行填写!!即映射表中的column!!!
- 类映射文件,格式如下:
- 为了让数据库成功连接,请您在任意一yml中进行如下配置:
MySql:
DatabaseName: databasename
UserName: root
Password: 123456
Port: 3306
Ip: localhost
#连接池池容量
PoolSize: 10
ConnectParameter: "useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"- 随后在合适的位置键入如下代码:
//ConfigUtil.getConfig() 获取为上述文件的 FileConfiguration 对象
//plugin为当前插件
SqlUtil sqlUtil = new SqlUtil(plugin,ConfigUtil.getConfig());- 或者您可以使用SqlConfig对象来进行初始化:
//public SqlConfig(String databaseName, String userName, String password, String ip, String port, int poolSize, String connectParameter);
SqlUtil sqlUtil = new SqlUtil(sqlConfig);- 至此,工具初始化完毕.
- 需要注意的一点是: 如果您想查询某个数据并获取封装类返回,默认的返回值是List;
- 那么如何进行查询呢?
- 1.使用yml:
sqlUtil.selectData(SqlConfigUtil.getSqlConfig(),"selectAllGlobalPlayer"); //如何使用获取的数据呢?一般来说进行遍历,或者直接get数据即可; for (Object globalPlayer: sqlUtil.selectData(SqlConfigUtil.getSqlConfig(),"selectAllGlobalPlayer")){ System.out.println(globalPlayer.toString()); }
- 2.使用语句并带入参数:
//待更新本部分教程代码 - 1.使用yml:
- 如何更新数据库数据?
- 1.使用yml:
//获取实体后修改相关数据,实体为 GlobalPlayer 类型的 newPlayer , 如下方法将返回受影响条数 sqlUtil.updateDataFromBean(SqlConfigUtil.getSqlConfig(),newPlayer,"updateGlobalPlayer");
- 2.使用语句并带入参数:
//待更新本部分教程代码 - 1.使用yml:
- 其他: 更多功能教程待更新...