需求背景
ITOO高校云平台系统,这是一个基于云的面向各大高校的教育系统,它使得教学管理更高效、更规范。随着各大
高校注册数量的增加,对于数据的安全性、将来数据的维护和数据库的扩展等等,都是非常值得考虑的问题。目前我
们对于这一风险的解决方案是“多租户”。
每当有一个高校在ITOO平台进行注册时,我们都会根据该校的注册名称自动为其生成对应的数据库名和一套基础
数据表,该数据库名是唯一的,例如河北农业大学对应的数据库名为hbnybase。这样每个高校的数据信息都在唯一的
数据库中进行存储,既提高了数据的安全性又提高了运维效率。
技术实现
首先需要在项目中下载并引用pinyin4j.jar文件。转换过程的实现:
<span style="font-size:18px;">
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class GetPinYinTest {
public static String getPinYin(String chinesName) {
String pinyinName = null;
char[] nameChar = chinesName.toCharArray();
// 创建格式化对象,设置汉语拼音的输出格式
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 设置为全小写格式
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// 设置为无声调格式
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
try {
for (int i = 0; i < nameChar.length; i++) {
String str = Character.toString(nameChar[i]);
// 判断是否为汉字
if (str.matches("[\\u4E00-\\u9FA5]+")) {
String pinyin = "";
// 取汉字所有全拼的第一种读音
pinyin = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],
defaultFormat)[0];
// 取汉语拼音的首字母
// pinyinName+=pinyin.charAt(0);
// 拼接所有汉语拼音
pinyinName += pinyin + "";
} else {// 不是汉字字符
pinyinName += str;
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return pinyinName+"base";
}
}</span>
在日常开发中,汉语转拼音的案例比比皆是,具体转换规则是由业务做驱动的。技术没有好坏,对于一款软件来
说,“业务驱动,设计先行”,好的设计要胜于好的技术,因此优秀严禁的设计是非常值得学习和研究的。