• 使用mybatis反向自动生成实体类和mapper映射文件和接口文件


    问题描述:

    最近在做web的东西,想要从数据库中生成实体类,然后操作数据库,然后做一些增删改查的工作,

    发现可以直接使用mybatis直接生成javabean,还有可以直接生成mapper的映射文件。具体操作如下:

    新建一个maven工程:

    (1)在pom文件中加入需要依赖的jar包(如下3个依赖)

    <dependency>

    <groupId>org.mybatis.generator</groupId>

    <artifactId>mybatis-generator-core</artifactId>

    <version>1.3.5</version>

    </dependency>
    <dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.38</version>

    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core -->
    <dependency>
    <groupId>org.apache.ibatis</groupId>
    <artifactId>ibatis-core</artifactId>
    <version>3.0</version>
    </dependency>

    (2)在根目录下创建一个generatorConfig.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="testTables" targetRuntime="MyBatis3">
    <commentGenerator>
    <!-- 是否去除自动生成的注释 true:是 : false:否 -->
    <property name="suppressAllComments" value="true" />
    </commentGenerator>
    <!--数据库连接的信息:驱动类、连接地址、用户名、密码 mysql数据库连接-->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
    connectionURL="jdbc:mysql://zhb-pc:3306/rrv" userId="report"
    password="report">
    </jdbcConnection>
    <!--oracle数据库连接-->
    <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
    userId="yycg"
    password="yycg">
    </jdbcConnection> -->

    <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
    NUMERIC 类型解析为java.math.BigDecimal -->
    <javaTypeResolver>
    <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <!-- targetProject:生成PO类的位置 -->
    <javaModelGenerator targetPackage="com.report.pojo"
    targetProject="src/main/java">
    <!-- enableSubPackages:是否让schema作为包的后缀 -->
    <property name="enableSubPackages" value="false" />
    <!-- 从数据库返回的值被清理前后的空格 -->
    <property name="trimStrings" value="true" />
    </javaModelGenerator>
    <!-- targetProject:mapper映射文件生成的位置 -->
    <sqlMapGenerator targetPackage="com.itheima.mapper"
    targetProject="src/main/resources">
    <!-- enableSubPackages:是否让schema作为包的后缀 -->
    <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>
    <!-- targetPackage:mapper接口生成的位置 -->
    <javaClientGenerator type="XMLMAPPER"
    targetPackage="com.report.dao"
    targetProject="src/main/java">
    <!-- enableSubPackages:是否让schema作为包的后缀 -->
    <property name="enableSubPackages" value="false" />
    </javaClientGenerator>
    <!-- 指定数据库表 -->
    <!-- <table tableName="items"></table> -->
    <table tableName="rule_conf"></table>
    <table tableName="rule_run_result"></table>
    <!-- <table tableName="user"></table> -->
    <!-- <table schema="" tableName="sys_user"></table>
    <table schema="" tableName="sys_role"></table>
    <table schema="" tableName="sys_permission"></table>
    <table schema="" tableName="sys_user_role"></table>
    <table schema="" tableName="sys_role_permission"></table> -->

    <!-- 有些表的字段需要指定java类型
    <table schema="" tableName="">
    <columnOverride column="" javaType="" />
    </table> -->
    </context>
    </generatorConfiguration>

    (3)编写一个主类然后运行即可生成。

    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;
    public class Generate {
    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 {
    Generate generatorSqlmap = new Generate();
    generatorSqlmap.generator();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    总结:在xml文件中定义的包不需要我们手动的创建,需要在执行的时候会直接生成。

  • 相关阅读:
    Java 垃圾收集与内存回收
    Java 内存区域与内存溢出
    ubuntu 12 JDK 编译
    android Animation 动画绘制逻辑
    Java 部分排序算法
    Java Arrays 排序
    android 性能分析、优化
    利用Navicate把SQLServer转MYSQL的方法(连数据)
    解决Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) ";
    windows redis 连接错误Creating Server TCP listening socket 127.0.0.1:637 9: bind: No error
  • 原文地址:https://www.cnblogs.com/gxgd/p/8919766.html
Copyright © 2020-2023  润新知