zoukankan      html  css  js  c++  java
  • Mybatisgenerator逆向工程

    $.Mybatis-generator介绍

    MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写SQL和对象代码。

    MyBatis Generator将生成:

    • 与表结构匹配的Java POJO。这可能包括:
      • 一个匹配表的主键的类(如果有主键)
      • 一个匹配表的非主键字段的类(BLOB字段除外)
      • 包含表的BLOB字段的类(如果表具有BLOB字段)
      • 用于启用动态选择,更新和删除的类

      这些类之间存在适当的继承关系。请注意,生成器可以配置为生成不同类型的POJO层次结构 - 例如,如果您愿意,可以选择为每个表生成单个域对象。

    • MyBatis / iBATIS兼容的SQL Map XML文件。MBG在配置中的每个表上为简单的CRUD函数生成SQL。生成的SQL语句包括:
      • 插入
      • 按主键更新
      • 通过示例更新(使用动态where子句)
      • 按主键删除
      • 按示例删除(使用动态where子句)
      • 按主键选择
      • 按示例选择(使用动态where子句)
      • 以身作则

      根据表的结构,这些语句有不同的变体(例如,如果表没有主键,则MBG不会通过主键功能生成更新)。

    • 适当使用上述对象的Java客户端类。Java客户端类的生成是可选的。MBG将为MyBatis 3.x生成以下类型的Java客户端:
      • 适用于MyBatis 3.x映射器基础结构的映射器接口
      MBG将为iBATIS 2.x生成以下类型的Java客户端:
      • 符合Spring框架的DAO
      • 仅使用iBATIS SQL映射API的DAO。这些DAO可以生成两种:通过构造函数或setter注入提供SqlMapClient
      • 符合iBATIS DAO框架的DAO(iBATIS的可选部分,现在不推荐使用此框架,我们建议您使用Spring框架)

    MyBatis生成器设计为在迭代开发环境中运行良好,并且可以作为Ant任务或Maven插件包含在连续构建环境中。迭代运行MBG时需要注意的重要事项包括:

    1. 如果存在与新生成的XML文件同名的现有文件,MBG将自动合并XML文件。MBG不会覆盖您对其生成的XML文件所做的任何自定义更改。您可以反复运行它,而不必担心会丢失对XML的自定义更改。MBG将替换先前运行中生成的任何XML元素。
    2. MBG 不会合并Java文件,它可以覆盖现有文件或使用不同的唯一名称保存新生成的文件。如果对生成的Java文件进行更改并以迭代方式运行MBG,则必须手动合并更改。当作为Eclipse 插件运行时 ,MBG可以自动合并Java文件。

          可生成pojo.Mapper接口 ,Mapper的xml文件

    $,使用方法通过官方文档使用运行generator

    官方文档地址:http://www.mybatis.org/generator/index.html  

    找到此配置文件,并复制所有配置内容 

    将配置文件复制到 新创建后的xml中  在你所在的工程下 并修改一些其中的配置 (以我的为例)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>
        <context id="DB2Tables" targetRuntime="MyBatis3">
        
            <!-- 生成策略,不显示注释 -->
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            
            <!-- 配置数据库连接属性 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://127.0.0.1:3306/cllover?useUnicode=true&amp;characterEncoding=UTF-8"
                userId="root" password="082999">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- 配置pojo模型位置 -->
            <javaModelGenerator targetPackage="cn.cllover.pojo"
                targetProject=".\src\main\java">
                <property name="enableSubPackages" value="true" />
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
    
            <!-- 配置 映射mapper生成xml文件的位置 -->
            <sqlMapGenerator targetPackage="mapper"
                targetProject=".\src\main\resources">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
    
            <!-- 生成mapper接口的位置 -->
            <javaClientGenerator type="XMLMAPPER"
                targetPackage="cn.cllover.dao" targetProject=".\src\main\java">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
    
            <!-- table表自动生成策略 -->
            <table tableName="tbl_emp" domainObjectName="Employee"></table>
            <table tableName="tbl_dept" domainObjectName="Department"></table>
    
        </context>
    </generatorConfiguration>

    红色加粗字体为更改变化的部分 包括targetPackage(包的位置) targetProject(路径位置)

    <table>中给所用的表进行生成策略,生成mapper.xml的内容 table_Name(表名) domainObjectName(模型对象名称)

    <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            此代码为清除生成后所产生的过多注释,
    
    
    $运行方法
    点开Running Mybatis Generator  >> With Java  
    复制选框中的java代码(本次使用java代码进行生成)
    package cn.cllover.test;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.internal.DefaultShellCallback;
    
    //mybatis-generator逆向工程包
    public class mbgTest {
    
        public static void main(String[] args) throws Exception {
            List<String> warnings = new ArrayList<String>();
               boolean overwrite = true;
               File configFile = new File("mbg.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);
        }
    }
    
    

    导入所需及其正确的包 

    运行java程序  待运行完毕后

    刷新项目即可出现所需要的pojo。mapper  mapper.xml

    $注意事项

    填写配置文件时,对路劲的填写错误,会报错,或者不生成   

      可以进行复制粘贴进行,确保填写正确无误。

    更多配置详情参考这里:

  • 相关阅读:
    PAT (Advanced Level) Practice 1055 The World's Richest (25 分) (结构体排序)
    PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)
    PAT (Advanced Level) Practice 1028 List Sorting (25 分) (自定义排序)
    PAT (Advanced Level) Practice 1035 Password (20 分)
    PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) (进制转换,回文数)
    PAT (Advanced Level) Practice 1120 Friend Numbers (20 分) (set)
    从零开始吧
    Python GUI编程(TKinter)(简易计算器)
    PAT 基础编程题目集 6-7 统计某类完全平方数 (20 分)
    PAT (Advanced Level) Practice 1152 Google Recruitment (20 分)
  • 原文地址:https://www.cnblogs.com/CllOVER/p/10355804.html
Copyright © 2011-2022 走看看