MyBatis逆向工程

mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),可以让程序员将更多的精力放在繁杂的业务逻辑上。

Mybatis逆向工程生成的Mapper所进行的操作都是针对单表的,也许你可能会觉得那这就有点鸡肋了,但是在大型项目中,很少有复杂的多表关联查询,所以作用还是很大的。

       <!--mybatis逆向工程 -->
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.7</version>
		</dependency>
      <!--mybatis 通用mapper操作 -->
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper</artifactId>
			<version>3.5.3</version>
		</dependency>

generate.xml配置:

<generatorConfiguration>
	<!--mybatis逆向工程,本质上是根据 数据库表生成 pojo类,mapper接口以及mapper.xml 文件 -->

	<!--读取配置文件  -->
	<properties resource="config/jdbc.properties" />

	<context id="Mysql" targetRuntime="MyBatis3Simple"
		defaultModelType="flat">

 		 <!-- 配置pojo的序列化 -->
		<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
		
		<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
			<property name="mappers" value="tk.mybatis.mapper.common.Mapper" />
			<property name="caseSensitive" value="true" />
			<property name="forceAnnotation" value="true" />
		</plugin>

		<commentGenerator>    
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		
		<!--配置链接参数-->
		<jdbcConnection driverClass="${jdbc.driverClass}"
			connectionURL="${jdbc.jdbcUrl}" userId="${jdbc.user}" password="${jdbc.password}">
		</jdbcConnection>
		
		 <!--      
     		 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer    
            true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal      
        -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>    
    
    	<!-- targetProject:生成PO类的位置  targetPackage:生成pojo包的名字-->
		<javaModelGenerator targetPackage="net.seehope.demo.user.pojo"
			targetProject="./src/test/java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
        <!-- targetProject:mapper映射文件生成的位置  targetPackage:将要生成的mapper映射文件包名字-->
		<sqlMapGenerator targetPackage="mapper" targetProject="./src/test/resources">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="net.seehope.demo.user.mapper" targetProject="./src/test/java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>

		<!--通配符匹配模块前缀,生成实体类以及映射接口-->
		<table tableName="upload_file">
			<generatedKey column="id" sqlStatement="Mysql" identity="true" />
		</table>

	</context>
</generatorConfiguration>

最后启动util包中的创建mybatis逆向工程工具类

public class GeneratorMybatisMapper {
	/**
	 * 根据默认配置创建逆向工程
	 * 默认配置文件为./src/main/resources/config/generator.xml
	 */
	public static void createMybatisGeneratorProject() {
		createMybatisGeneratorProject("./src/main/resources/config/generator.xml");
	}

	/**
	 * 根据传入的配置文件路径生成逆向工程
	 * @param genertorConfigPath 配置文件路径
	 */
	public static void createMybatisGeneratorProject(String genertorConfigPath) {
		try {
			List<String> warnings = new ArrayList<String>();
			boolean overwrite = true;
			File configFile = new File(genertorConfigPath);
			ConfigurationParser cp = new ConfigurationParser(warnings);
			Configuration config = cp.parseConfiguration(configFile);
			DefaultShellCallback callback = new DefaultShellCallback(overwrite);
			MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
			myBatisGenerator.generate(null);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {

		createMybatisGeneratorProject();
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值