【MyBatis系列】:SpringMvc+MyBatis之初始化建表(01)


一、工程目錄

 

二、定義系統初始化核心類

1.com.system.utils.service.SystemInitService

package com.system.utils.service;

import javax.servlet.ServletContext;

import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.system.utils.bean.DataBaseInit;

/**
 * 系統初始化
 * @author Carl
 * @date 2016-09-13
 */
@Service
public abstract class SystemInitService {
    
    private static final Logger log = Logger.getLogger(SystemInitService.class);
    
    @Autowired
    private IDataBaseInitService dataBaseInitService;
    
    /**
     * 獲取初始化接口
     * @param beanName 
     * @param context
     */
    public final static void initialization(final String beanName, final ServletContext context){
        try {
            final WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(context);
            final SystemInitService initService = (SystemInitService) applicationContext.getBean(beanName, SystemInitService.class);
            initService.init(context);
        } catch (Exception e) {
            log.error(e.getMessage(),e);
        }
    }
    
    
    /**
     * 系統初始化數據
     * 
     */
    public abstract void initData();
    
    /**
     * 資源路徑
     * @return
     */
    public abstract String resourcePath();
    /**
     * 初始化數據庫
     * 
     * @author Carl
     */
    private void initDatabase() {
        try {
            if (StringUtils.isEmpty(resourcePath())) {
                return;
            }
            Resource resource = new ClassPathResource(resourcePath());
            final Serializer  serializer = new Persister();
            DataBaseInit dataBaseInit = serializer.read(DataBaseInit.class, resource.getInputStream());
            dataBaseInitService.initDatabase(dataBaseInit);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }
    /**
     * 初始化模板
     * @param context
     */
    private void init(final ServletContext context) {
        System.out.println("========================系統開始初始化=======================================");
        initDatabase();
        initData();
        System.out.println("========================系統初始化結束=======================================");
    }
}

SystemInitService實現類 com.nc.rms.service.init.CmsSystemInitServiceImpl

package com.nc.rms.service.init;

import org.springframework.stereotype.Service;

import com.system.utils.service.SystemInitService;

@Service("cmsSystemInitService")
public class CmsSystemInitServiceImpl extends SystemInitService{
    
    
    @Override
    public void initData() {
        System.out.println("初始化進行中");
    }

    @Override
    public String resourcePath() {
        return "sql/DatabaseInit.xml";
    }

}

DatabaseInit.xml  數據庫建表語句存放路徑 create初始化建表語句,update修改數據庫表

<?xml version="1.0" encoding="UTF-8"?>
<databaseInit initCode="rms.table.version">
    
    <create>
        <sqlPath>sql/rms/create_table_mysql.sql</sqlPath>
        <!-- <procPath></procPath> -->
    </create>

    <update updateVersion="1.1">
        <sqlPath>sql/rms/update_table_1.1.sql</sqlPath>
    </update>
     
</databaseInit>

 太多了不想寫了,有喜歡的朋友可以直接看源碼。

http://pan.baidu.com/s/1jHAcjTO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM