• Mybatis逆向工程的pojo实现序列化接口代码


    情景如下,这两天在做一个分布式的项目,使用了Alibaba的dubbo作为通信工具,zookeeper作为register,由于dubbo是基于socket协议的,所以在进行pojo传输的时候报了异常,因为pojo没有实现序列化接口,就无法进行基于二进制的序列化传输。报错如下。

    但是很麻烦的一件事是如果逆向工程生成的pojo全部自己实现序列化会很麻烦,所以看了一下mybatis的插件,发现有一个可以自动给所有pojo实现序列化接口(example除外)。

    具体代码如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE generatorConfiguration
     3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
     4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
     5 
     6 <generatorConfiguration>
     7     <context id="testTables" targetRuntime="MyBatis3">
     8 
     9         <!-- 配置pojo的序列化 -->
    10         <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
    11 
    12         <commentGenerator>
    13             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
    14             <property name="suppressAllComments" value="true" />
    15         </commentGenerator>
    16         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    17         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
    18             connectionURL="jdbc:mysql://localhost:3306/xxxxxxx" userId=" "
    19             password=" ">
    20         </jdbcConnection>
    21         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
    22             和 NUMERIC 类型解析为java.math.BigDecimal -->
    23         <javaTypeResolver>
    24             <property name="forceBigDecimals" value="false" />
    25         </javaTypeResolver>
    26 
    27         <!-- targetProject:生成PO类的位置 -->
    28         <javaModelGenerator
    29             targetPackage="cn.xxxxxxx.pojo" targetProject=".src">
    30             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    31             <property name="enableSubPackages" value="false" />
    32             <!-- 从数据库返回的值被清理前后的空格 -->
    33             <property name="trimStrings" value="true" />
    34         </javaModelGenerator>
    35         <!-- targetProject:mapper映射文件生成的位置 -->
    36         <sqlMapGenerator targetPackage="cn.xxxxxxx.mapper"
    37             targetProject=".src">
    38             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    39             <property name="enableSubPackages" value="false" />
    40         </sqlMapGenerator>
    41         <!-- targetPackage:mapper接口生成的位置 -->
    42         <javaClientGenerator type="XMLMAPPER"
    43             targetPackage="cn.xxxxxxx.mapper" targetProject=".src">
    44             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    45             <property name="enableSubPackages" value="false" />
    46         </javaClientGenerator>
    47         <!-- 指定数据库表 -->
    48         <table schema="" tableName=" "></table>
    49         <table schema="" tableName=" "></table>
    50         <table schema="" tableName=" "></table>
    51         <table schema="" tableName=" "></table>
    52         <table schema="" tableName=" "></table>
    53         <table schema="" tableName=" "></table>
    54         <table schema="" tableName=" "></table>
    55         <table schema="" tableName=" "></table>
    56         <table schema="" tableName=" "></table>
    57         <table schema="" tableName=" "></table>
    58         <table schema="" tableName=" "></table>
    59 
    60     </context>
    61 </generatorConfiguration>


    java代码如下:

    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.exception.XMLParserException;
    import org.mybatis.generator.internal.DefaultShellCallback;
    
    public class GeneratorSqlmap {
    
    
    	public void generator() throws Exception {
    
    		List<String> warnings = new ArrayList<String>();
    		boolean overwrite = true;
    		// 指定 逆向工程配置文件
    		File configFile = new File("generatorConfig.xml");
    		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);
    
    	}
    
    	public static void main(String[] args) throws Exception {
    		try {
    			GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
    			generatorSqlmap.generator();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    	}
    
    }
    


    需要的jar如下:点击下载

  • 相关阅读:
    Spring--自定义注解
    IntelliJ IDEA实用插件
    Zero date value prohibited解决方法
    如何保证幂等性
    Map遍历的几种方式
    Static关键字
    索引失效 -- 使用Between范围查询时
    接口的不同写法在Swagger上的不同
    js与jquery获取input输入框中的值
    一个简单的 aiax请求例子
  • 原文地址:https://www.cnblogs.com/TimeIsChoice/p/8807548.html
Copyright © 2020-2023  润新知