MBG(Mybatis generator)自动生成sql语句

学习官网 http://www.mybatis.org/generator/


含有分页的插件

创建一个简单的maven项目  在src/main/java包下  创建一个mbg.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
	<!-- 驱动包(数据库的jar包) -->
  <classPathEntry location="D:\mysql-connector-java-5.1.26-bin.jar" />

	<!--  targetRuntime开发环境使用的mybatis的版本 -->
  <context id="DB2Tables" targetRuntime="MyBatis3">
  	<!-- 连接数据库的四要素 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/test"
        userId="root"
        password="123456">
    </jdbcConnection>
   <!-- 分页插件 -->
  <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"></plugin>
    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

	<!-- 实体类 bean  带有get和set方法的bean -->
    <javaModelGenerator targetPackage="cn.et.entity" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
	
	<!-- sql语句相关的xml或者注解的生成包路径 -->
    <sqlMapGenerator targetPackage="cn.et.resource"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
	
	<!-- 生成的接口所在的位置 
		注解
		type="ANNOTATEDMAPPER"
		xml
		type="XMLMAPPER"
	-->
    <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="cn.et.dao"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
	
	<!-- 数据库名 -->
    <table tableName="food">
    </table>

  </context>
</generatorConfiguration>


在pom.xml中配置  运行maven需要的插件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>GBM</groupId>
  <artifactId>GBM</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>GBM</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

	<!-- 运行maven需要的插件 -->
	<build>
		<plugins>
			<plugin> 
	      	  <groupId>org.mybatis.generator</groupId>
	      	  <artifactId>mybatis-generator-maven-plugin</artifactId>
	          <version>1.3.5</version>
	          <configuration>
	          	<configurationFile>src/main/java/mbg.xml</configurationFile>//指定mbg.xml在项目中的路径
	          </configuration>
			</plugin>
		</plugins>
	</build>


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>





如果是Oracle数据库则需要进行类型转换

Oracle数据库,用mybatis-gen.xml 自动生成Java对象的时候,会根据number类型的长度不同生成不同的数据类型

 

number长度Java类型
1~4Short
5~9Integer
10~18Long
18+BigDecimal

这样就写了一个类型转换器,需要继承JavaTypeResolver接口

然后在mybaties配置文件generatorConfig.xml中类型转换配置位置添加上即


<javaTypeResolver type="com.generator.MyJavaTypeResolver">  
    <property name="forceBigDecimals" value="false" />                                             
</javaTypeResolver> 
mbg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
	<!-- 驱动包(数据库的jar包) -->
  <classPathEntry location="D:\mysql-connector-java-5.1.26-bin.jar" />

	<!--  targetRuntime开发环境使用的mybatis的版本 -->
  <context id="DB2Tables" targetRuntime="MyBatis3">
  	<!-- 连接数据库的四要素 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/test"
        userId="root"
        password="123456">
    </jdbcConnection>

    <javaTypeResolver  type="com.generator.MyJavaTypeResolver">
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

	<!-- 实体类 bean  带有get和set方法的bean -->
    <javaModelGenerator targetPackage="cn.et.entity" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
	
	<!-- sql语句相关的xml或者注解的生成包路径 -->
    <sqlMapGenerator targetPackage="cn.et.resource"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
	
	<!-- 生成的接口所在的位置 
		注解
		type="ANNOTATEDMAPPER"
		xml
		type="XMLMAPPER"
	-->
    <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="cn.et.dao"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
	
	<!-- 数据库名 -->
    <table tableName="food">
    </table>

  </context>
</generatorConfiguration>

类型转换器MyJavaTypeResolver主要代码

public FullyQualifiedJavaType calculateJavaType(  
            IntrospectedColumn introspectedColumn) {  
        // TODO Auto-generated method stub  
         FullyQualifiedJavaType answer;  
            JdbcTypeInformation jdbcTypeInformation = typeMap  
                    .get(introspectedColumn.getJdbcType());  
  
            if (jdbcTypeInformation == null) {  
                switch (introspectedColumn.getJdbcType()) {  
                case Types.DECIMAL:  
                case Types.NUMERIC:  
                    if(introspectedColumn.getScale() > 0)  
                    {//如果包含小数点则转换成float  
                        answer = new FullyQualifiedJavaType(Float.class.getName());  
                    }else{  
                        if ( introspectedColumn.getLength() > 18  
                                || forceBigDecimals) {  
                            answer = new FullyQualifiedJavaType(BigDecimal.class  
                                    .getName());  
                        } else if (introspectedColumn.getLength() > 9) {  
                            answer = new FullyQualifiedJavaType(Long.class.getName());  
                        } else if (introspectedColumn.getLength() > 4) {  
                            answer = new FullyQualifiedJavaType(Integer.class.getName());  
                        } else {  
                            answer = new FullyQualifiedJavaType(Short.class.getName());  
                        }  
                    }  
                    break;  
  
                default:  
                    answer = null;  
                    break;  
                }  
            } else {  
                answer = jdbcTypeInformation.getFullyQualifiedJavaType();  
            }  
  
            return answer;  
    }  
以上是生成注解的案例   如要生成xml  上面的mbg.xml有说明  只要改动即可  还要生成一个源文件包 src/main/resources






<!-- 生成的接口所在的位置 
		注解
		type="ANNOTATEDMAPPER"
		xml
		type="XMLMAPPER"
	-->
    <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="cn.et.dao"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

运行命令     mybatis-generator:generate



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值