项目的研发或者上线阶段,为了方便,可能需要初始化数据库:包括用户,权限,或者一些其他的基础数据。我这里采用的是解析Xml文件初始化数据库。
(1)Xml文件的格式如下:
(2)配置初始化数据的Servlet
在web.xml中配置
<servlet>
<servlet-name>PersistenceTest</servlet-name>
<servlet-class>com.saving.ecm.servlet.PersistenceInitialize</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
(3)Tomcat服务器启动时,加载Servlet
publicclassPersistenceInitializeextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
privatestaticfinalStringFILEPATH="initDataBase.xml";
@Override
publicvoidinit()throwsServletException{
super.init();
try{
//如果用户数据count=0
Documentdocument=new
SAXReader().read(Thread.currentThread().getContextClassLoader()
.getResourceAsStream(FILEPATH));
initUser(document);//初始化用户
}catch(Throwablee){
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
privatevoidinitUser(Documentdocument){
List<Node>childNodes=document.selectNodes("//users/user");
CommonAction<User>action=newCommonAction<User>(User.class);
for(Nodenode:childNodes){
Useruser;
try{
user=action.findById(Long.parseLong(node.valueOf("@id")));
if(user==null){
user=newUser();
}
user.setAccount(node.valueOf("@account"));
user.setName(node.valueOf("@name"));
user.setPassword(MD5Util.md5(node.valueOf("@password")));
user.setEmail(node.valueOf("@email"));
user.setRoleCode(node.valueOf("@roleCode"));
user.setStatus(node.valueOf("@status"));
user.setCreationTime(System.currentTimeMillis());
action.saveEntity(user);
}catch(Throwablee){
e.printStackTrace();
}
}
}
}
原文链接:https://www.f2er.com/xml/297433.html