zoukankan      html  css  js  c++  java
  • mybatis-generator 的坑我都走了一遍

    一、简介

    mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件。

    二、配置方法

    在项目的pom文件中添加插件配置

    <plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
    <verbose>true</verbose>
    <overwrite>true</overwrite>
    </configuration>
    </plugin>
    在main的resource目录下创建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>
    <!--导入属性配置-->
    <properties resource="datasource.properties"></properties>

    <!-- 指定数据库驱动的jdbc驱动jar包的位置 -->
    <classPathEntry location="${db.driverLocation}" />

    <!-- context 是逆向工程的主要配置信息 -->
    <!-- id:起个名字 -->
    <!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 -->
    <context id="default" targetRuntime="MyBatis3">

    <!--optional,旨在创建class时,对注释进行控制-->
    <commentGenerator>
    <property name="suppressDate" value="true" />
    <!-- 是否去除自动生成的注释 true:是 : false:否 -->
    <property name="suppressAllComments" value="true" />
    </commentGenerator>

    <!--jdbc的数据库连接-->
    <jdbcConnection driverClass="${db.driverClassName}"
    connectionURL="${db.url}"
    userId="${db.username}"
    password="${db.password}">
    </jdbcConnection>

    <!--非必须,类型处理器,在数据库类型和java类型之间的转换控制-->
    <javaTypeResolver>
    <!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 -->
    <!-- 不是 double 和 long 类型 -->
    <!-- 使用常用的基本类型代替 sql 包下的引用类型 -->
    <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <!-- targetPackage:生成的实体类所在的包 -->
    <!-- targetProject:生成的实体类所在的硬盘位置 -->
    <javaModelGenerator targetPackage="com.mall.pojo"
    targetProject=".srcmainjava">
    <!-- 是否允许子包 -->
    <property name="enableSubPackages" value="false" />
    <!-- 是否对modal添加构造函数 -->
    <property name="constructorBased" value="true" />
    <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
    <property name="trimStrings" value="true" />
    <!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 -->
    <property name="immutable" value="false" />
    </javaModelGenerator>

    <!-- targetPackage 和 targetProject:生成的 mapper 文件的包和位置 -->
    <sqlMapGenerator targetPackage="mappers"
    targetProject=".srcmain esource">
    <!-- 针对数据库的一个配置,是否把 schema 作为字包名 -->
    <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>

    <!-- targetPackage 和 targetProject:生成的 interface 文件的包和位置 -->
    <javaClientGenerator type="XMLMAPPER"
    targetPackage="com.mall.dao" targetProject=".srcmainjava">
    <!-- 针对 oracle 数据库的一个配置,是否把 schema 作为字包名 -->
    <property name="enableSubPackages" value="false" />
    </javaClientGenerator>
    <table tableName="user" domainObjectName="User"
    enableCountByExample="false" enableUpdateByExample="false"
    enableDeleteByExample="false" enableSelectByExample="false"
    selectByExampleQueryId="false">
    </table>
    </context>
    </generatorConfiguration>
    generatorConfig.xml文件中的一些配置信息需要在配置文件中添加

    在同一目录下创建datasource.properties文件

    db.driverLocation=C:/Users/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar
    db.driverClassName=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://192.168.199.193:3306/mall?characterEncoding=utf-8
    db.username=root
    db.password=123456
    配置的三行的192.168.199.193需要替换成所在主机的IP,mall替换成数据库名称

    配置第四行和第五行分别配置为数据库连接的用户名和密码

    在generatorConfig.xml文件中添加完需要生成的表的配置后

    双击图中配置,就可以自动生成mapper和xml文件了

    但是!以上仅存在于顺利的情况下!!!下面我会讲一下我遇到的坑和相关的解决方法:)

    问题一:在Maven Projects侧根本就找不到mybatis-generator,无法双击

    解决方法:打开pom文件,在pluginManagement标签的下面创建plugins标签,然后将mybatis-generator插件配置移动到plugins标签中,如图

    问题二:双击mybatis-generator后报错

    [ERROR] Error resolving version for plugin 'org.apache.maven.plugin:maven-compiler-plugin' from the repositories [local (C:Users.m2 epository), central (http://repo.maven.apache.org/maven2)]: Plugin not found in any plugin repository -> [Help 1]

    解决方法:pom文件中maven的配置要加version标签,如图

    问题三:报错

    [ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate failed: Cannot resolve classpath entry: C:Users.m2

    解决方法:因为偷懒,datasource.properties文件中的db.driverLocation值是直接在文件夹中复制粘贴的,所以路径的斜线都是“”,只要改成“/”就可以了,上面的配置步骤中的配置内容已是正确内容

    问题四:这个问题是后面几个报错的整合

    报错1:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Access denied for user 'mall'@'219.143.190.211' (using password: YES) -> [Help 1]

    报错2:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: null,  message from server: "Host 'zs-HP.lan' is not allowed to connect to this MySQL server" -> [Help 1]

    报错3:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Access denied for user 'root'@'%' to database 'mall' -> [Help 1]

    报错4:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: SELECT command denied to user 'root'@'zs-HP.lan' for table 'cart' -> [Help 1]

    报错5:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Access denied for user 'root'@'zs-HP.lan' (using password: YES) -> [Help 1]

    以上报错基本都是出于同一类问题,只要按照如下步骤操作,基本可以避免。

    1、找到mysql bin目录下的my.ini文件,在[mysql]下面加上 skip-grant-tables  用于跳过密码

    2、mysql开启mysql远程访问权限(cmd以管理员身份运行)

    登录到mysql:  mysql -uroot -ppwd
    查看user表:
    mysql> use mysql
    Database changed
    mysql> select host,user,password,Grant_priv,Super_priv from user;
    +--------------+---------+--------------------------------------+------------+------------+
    | host | user | password | Grant_priv | Super_priv
    +--------------+---------+-------------------------------------------+------------+--------
    | LocalHost | root | *FED29C14B2E900D70B11B1F1B370F953BA51| N | Y
    +--------------+---------+--------------------------------------+------------+------------+
    1 row in set (0.00 sec)
    将localhost修改成%。修改成%表示,所有主机都可以通过root用户访问数据库。
           命令:mysql> update user set host = '%',Grant_priv='Y', Super_priv='Y'  where user = 'root';

           再次查看表:mysql>use mysql

           查看是否已经修改好

           最后!!!输入命令:mysql> FLUSH PRIVILEGES; 刷新之前修改的内容

           这才能生效!!!!!

    3、修改数据库表权限

    如果mysql客户端(本人使用的是Navicate)选中表单机右键可以找到设置权限选项,则勾选相应的操作即可

    如果右键没有设置权限选项,则需要新增用户,配置如下

    然后双击管理用户,即可进行权限配置

    完成以上步骤,基本可以解决大部分的报错,如有其他问题,本人暂时还未遇到,请自行百度 :)

    以上,感谢~

     https://blog.csdn.net/qq_40307945/article/details/81351302 

    ---------------------
    作者:隔壁赵大壮
    来源:CSDN
    原文:https://blog.csdn.net/qq_40307945/article/details/81351302
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    隐藏 阴影 定位 js语法与导入
    js 相关知识
    选择器 常用样式 布局
    前端
    数据库 备份
    SQLAlchemy 创建 增 删 改 查
    引擎 索引 日志查询 权限管理
    pysql
    数据库的操作
    Conv1*1
  • 原文地址:https://www.cnblogs.com/sjqq/p/10067874.html
Copyright © 2011-2022 走看看