• 【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

  • 相关阅读:
    20165322 第九周 实现mypwd
    20165322 第七周 mybash 的实现
    2018-2019-1 20165322 实验三 实时系统
    2018-2019-1 20165318 20165322 20165326 实验二 固件程序设计
    2018-2019-1 20165322 《信息安全系统设计基础》第六周学习总结
    codeblocks汉化
    2019-2020-1 20175334 实验五 《通讯协议设计》实验报告
    2019-2020-1 20175334 20175322 20175315 实验四 外设驱动程序设计
    2019-2020-1 20175315 20175322 20175334 实验三 实时系统
    2019-2020-1 20175334 20175322 20175315 实验二 固件程序设计
  • 原文地址:https://www.cnblogs.com/ncjava/p/5917391.html
Copyright © 2020-2023  润新知