解析xml初始化資料庫,解析xml初始化
項目的研發或者上線階段,為了方便,可能需要初始化資料庫:包括使用者,許可權,或者一些其他的基礎資料。我這裡採用的是解析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
public class PersistenceInitialize extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String FILEPATH = "initDataBase.xml";
@Override
public void init() throws ServletException {
super.init();
try {
//如果使用者資料count = 0
Document document = new
SAXReader().read(Thread.currentThread().getContextClassLoader()
.getResourceAsStream(FILEPATH));
initUser(document);// 初始化使用者
} catch (Throwable e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
private void initUser(Document document) {
List<Node> childNodes = document.selectNodes("//users/user");
CommonAction<User> action = new CommonAction<User>(User.class);
for (Node node : childNodes) {
User user;
try {
user = action.findById(Long.parseLong(node.valueOf("@id")));
if (user == null) {
user = new User();
}
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 (Throwable e) {
e.printStackTrace();
}
}
}
}