java动态设置xml值_使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置...

/**

**/package com.yuebing.zhongqiu.utils;

import java.io.File;

import java.io.IOException;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;

import org.mybatis.generator.api.ProgressCallback;

import org.mybatis.generator.config.Configuration;

import org.mybatis.generator.config.Context;

import org.mybatis.generator.config.JavaClientGeneratorConfiguration;

import org.mybatis.generator.config.JavaModelGeneratorConfiguration;

import org.mybatis.generator.config.SqlMapGeneratorConfiguration;

import org.mybatis.generator.config.TableConfiguration;

import org.mybatis.generator.config.xml.ConfigurationParser;

import org.mybatis.generator.exception.InvalidConfigurationException;

import org.mybatis.generator.exception.XMLParserException;

import org.mybatis.generator.internal.DefaultShellCallback;/**

* @author IT

**/

public classGeneratorUtil {/**

* 使用java文件和xml文件结合的方式来配置org.mybatis.generator 自动生成代码

* @param configFileName 配置文件的名称

* @param tableConfig 配置项

* @param pcallbacks 回调接口

* @return 是否成功

* @throws IOException

* @throws XMLParserException

* @throws InvalidConfigurationException

* @throws SQLException

* @throws InterruptedException*/

public static boolean setJaveFile(String configFileName,HashMaptableConfig,ProgressCallback pcallbacks) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {

List warnings = new ArrayList();

boolean overwrite= true;

String rfp= GeneratorUtil.class.getResource("/"+configFileName).getFile();

File configFile= newFile(rfp);

ConfigurationParser cp= newConfigurationParser(warnings);

Configuration config=cp.parseConfiguration(configFile);

DefaultShellCallback callback= newDefaultShellCallback(overwrite);

MyBatisGenerator myBatisGenerator= null;//hashmap

setConfiguration(config, tableConfig);

myBatisGenerator= newMyBatisGenerator(config, callback, warnings);

myBatisGenerator.generate(pcallbacks );return true;

}public static void setConfiguration(Configuration cft,HashMaptableConfig) {if(cft != null) {

List contextList =cft.getContexts();for(Context context :contextList) {

List tableConfList =context.getTableConfigurations();for(TableConfiguration tableConf :tableConfList) {//设置表名

String tableName = tableConfig.get("tableName");if(tableName != null && !"".equals(tableName))

tableConf.setTableName(tableName);//设置生成的实体类的名称

String domainObjectName = tableConfig.get("domainObjectName");if(domainObjectName != null && !"".equals(domainObjectName))

tableConf.setDomainObjectName(domainObjectName);

}//java实体类配置

JavaModelGeneratorConfiguration javaMode =context.getJavaModelGeneratorConfiguration();//设置model实体类对应的包路径,以及文件存放路径 targetProject可以指定具体的路径,如./src/main/java

String targetPackage = tableConfig.get("targetPackage");

String targetProject= tableConfig.get("targetProject");if(targetPackage != null && !"".equals(targetPackage))

javaMode.setTargetPackage(targetPackage);if(targetProject != null && !"".equals(targetProject))

javaMode.setTargetProject(targetProject);//对应的mapper.xml文件

SqlMapGeneratorConfiguration sqlMap =context.getSqlMapGeneratorConfiguration();

String xml_targetPackage= tableConfig.get("xml_targetPackage");

String xml_targetProject= tableConfig.get("xml_targetProject");if(xml_targetPackage != null && !"".equals(xml_targetPackage))

sqlMap.setTargetPackage(xml_targetPackage);if(xml_targetProject != null && !"".equals(xml_targetProject))

sqlMap.setTargetProject(xml_targetProject);//对应的Mapper接口类文件

JavaClientGeneratorConfiguration javaClient =context.getJavaClientGeneratorConfiguration();

String Java_map_targetPackage= tableConfig.get("Java_map_targetPackage");

String Java_map_targetProject= tableConfig.get("Java_map_targetProject");if(Java_map_targetPackage != null && !"".equals(Java_map_targetPackage))

javaClient.setTargetPackage(Java_map_targetPackage);if(Java_map_targetProject != null && !"".equals(Java_map_targetProject))

javaClient.setTargetProject(Java_map_targetProject);//context//CommentGenerator commGen = context.getCommentGenerator();

}

}

}public static voidmain(String[] ag) {

String configFileName= "generatorConfiguration.xml";

HashMap tableConfig = new HashMap();

tableConfig.put("tableName", "sys_menu");

tableConfig.put("domainObjectName", "SysMenu");

tableConfig.put("targetPackage", "com.yuebing.zhongqiu.manage.system.bean");

tableConfig.put("targetProject", "./src/main/java");

tableConfig.put("xml_targetPackage", "mappers");

tableConfig.put("xml_targetProject", "./src/main/resources/static/mappers");

tableConfig.put("Java_map_targetPackage", "com.yuebing.zhongqiu.manage.system.dao.mapper");

tableConfig.put("Java_map_targetProject", "./src/main/java");

ProgressCallback pcallbacks= null;try{

setJaveFile(configFileName,tableConfig,pcallbacks);

}catch(IOException e) {

e.printStackTrace();

}catch(XMLParserException e) {

e.printStackTrace();

}catch(InvalidConfigurationException e) {

e.printStackTrace();

}catch(SQLException e) {

e.printStackTrace();

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值