除了自动生成mapper ,之外还支持从dao跳到xml处,以方便查看sql。
resources/generator下增加generatorConfig.xml和 mybatisGenerator.properties
properties文件的方式感觉更好一下,方便修改配置:
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_phonebook?serverTimezone=GMT
jdbc.username=root
jdbc.password=mofsfely
# Domain类的包路径
model.target.package=com.java1234.entity
# Domain类的物理路径
model.target.project=src/main/java
# 生成Mapper XML文件的包路径
mapper.target.package=mybatis/mapper
# 生成Mapper XML文件的物理路径
mapper.target.project=src/main/resources
# DAO接口的包路径
dao.target.package=com.java1234.mapper
# DAO接口的物理路径
dao.target.project=src/main/java
注:主要配置数据库连接以及生成文件目录。
generatorConfig.xml文件中除了数据库连接以及生成文件目录配置以外,还可配置包括编码格式,关键字时的处理,Java类型解析配置,操作的表名的映射关系(t_user 映射为 user)。具体使用请看配置文件中的注释。
<?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">
<!-- Mybatis generator配置,默认针对MySQL数据库,具体参考 http://www.mybatis.org/generator/configreference/xmlconfig.html -->
<generatorConfiguration>
<!-- 配置文件的路径 -->
<properties resource="generator/mybatisGenerator.properties"/>
<!-- 每一张表只生成一个实体类 -->
<context id="default" targetRuntime="MyBatis3" defaultModelType="flat">
<!-- 生成的Java文件的编码 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;
一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖 -->
<property name="autoDelimitKeywords" value="false"/>
<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,
比如ORACLE就是双引号 \",MYSQL默认是`反引号 -->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- tk -->
<!--这里最关键的参数就是 mappers,配置后生成的 Mapper 接口都会自动继承上改接口-->
<!--
其他参数的含义:
• caseSensitive 是否区分大小写,默认值 false。如果数据库区分大小写,这里就需要配置为 true,这样当表名为 USER 时,会生成 @Table(name = "USER") 注解,否则使用小写 user 时会找不到表。
• forceAnnotation 是否强制生成注解,默认 false,如果设置为 true,不管数据库名和字段名是否一致,都会生成注解(包含 @Table 和 @Column)。
• beginningDelimiter 和 endingDelimiter 开始和结束分隔符,对于有关键字的情况下适用。
• useMapperCommentGenerator 是否使用通用 Mapper 提供的注释工具,默认 true 使用,这样在生成代码时会包含字段的注释(目前只有 mysql 和 oracle 支持),设置 false 后会用默认的,或者你可以配置自己的注释插件。
• generateColumnConsts 在生成的 model中,增加字段名的常量,便于使用 Example 拼接查询条件的时候使用。
• lombok 增加 model 代码生成时,可以直接生成 lombok 的 @Date 注解, 使用者在插件配置项中增加 <property name="lombok" value="Getter,Setter,ToString,Accessors"/> 即可生成对应包含注解的 model 类。
-->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<property name="caseSensitive" value="true"/>
<property name="forceAnnotation" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="lombok" value="Data"/>
</plugin>
<!-- 数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
<!-- 用于获取表的注释信息等 -->
<property name="useInformationSchema" value="true"/>
</jdbcConnection>
<!-- Java类型解析配置 -->
<javaTypeResolver>
<!-- 将JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal -->
<property name="forceBigDecimals" value="false"/>
<!-- 将JDBC DATE,TIME和TIMESTAMP类型解析为java.util.Date -->
<property name="useJSR310Types" value="false"/>
</javaTypeResolver>
<!-- targetPackage生成Domain类的包路径,targetProject生成Domain类的物理路径 -->
<javaModelGenerator targetPackage="${model.target.package}" targetProject="${model.target.project}">
<!-- 不使用schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 不为String类型的setter方法自动加上trim -->
<property name="trimStrings" value="false"/>
</javaModelGenerator>
<!-- targetPackage生成XML文件的包路径,targetProject生成XML文件的物理路径-->
<sqlMapGenerator targetPackage="${mapper.target.package}" targetProject="${mapper.target.project}">
<!-- 不使用schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- targetPackage生成DAO接口的包路径,targetProject生成DAO接口的物理路径 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="${dao.target.package}" targetProject="${dao.target.project}">
<!-- 不使用schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 指定数据库表,schema数据库名,tableName数据表名,%表示匹配所有的表 -->
<!-- <table tableName="%"-->
<!-- enableCountByExample="false" enableUpdateByExample="false"-->
<!-- enableDeleteByExample="false" enableSelectByExample="false"-->
<!-- selectByExampleQueryId="false">-->
<!-- <!– generatedKey用于生成生成主键的方法,column表示主键名称,-->
<!-- sqlStatement=JDBC相当于在生成的insert元素上添加useGeneratedKeys="true"和keyProperty属性 –>-->
<!--<!– <generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual"/>–>-->
<!-- <generatedKey column="id" sqlStatement="JDBC"/>-->
<!-- <!–该元素会在根据表名计算类名之前先重命名表名,非常适合用于表名中都有公用的前缀字符串的时候,–>-->
<!-- <!–比如表名为:T_USER,T_ORDER等;–>-->
<!-- <!–那么就可以设置searchString为"^T"(无论表名是否大写,此处首字母一定为大写),并使用空白替换,–>-->
<!-- <!–那么会生成User, Order对象,–>-->
<!-- <!–注意,MBG是使用java.util.regex.Matcher.replaceAll来替换searchString和replaceString的–>-->
<!-- <!– <domainObjectRenamingRule searchString="^TbEros" replaceString=""/>–>-->
<!-- <!–-->
<!-- 该元素会在根据表中列名计算对象属性名之前先重命名列名,非常适合用于表中的列都有公用的前缀字符串的时候,-->
<!-- 比如列名为:CUST_ID,CUST_NAME,CUST_EMAIL,CUST_ADDRESS等;-->
<!-- 那么就可以设置searchString为"^CUST_",并使用空白替换,那么生成的Customer对象中的属性名称就不是-->
<!-- custId,custName等,而是先被替换为ID,NAME,EMAIL,然后变成属性:id,name,email;-->
<!-- 注意,MBG是使用java.util.regex.Matcher.replaceAll来替换searchString和replaceString的,-->
<!-- 如果使用了columnOverride元素,该属性无效;-->
<!-- <columnRenamingRule searchString="" replaceString=""/>-->
<!-- –>-->
<!-- <!– 用来修改表中某个列的属性,MBG会使用修改后的列来生成domain的属性;-->
<!-- column:要重新设置的列名;一个table元素中可以有多个columnOverride元素-->
<!-- 详细可参考http://www.mybatis.org/generator/configreference/columnOverride.html-->
<!-- <columnOverride column="username" property="userName" />-->
<!-- –>-->
<!-- <!– ignoreColumn设置一个MGB忽略的列,如果设置了改列,那么在生成的domain中,生成的SQL中,都不会有该列出现-->
<!-- column:指定要忽略的列的名字;delimitedColumnName:参考table元素的delimitAllColumns配置,默认为false;-->
<!-- 注意,一个table元素中可以有多个ignoreColumn元素-->
<!-- <ignoreColumn column="deptId" delimitedColumnName=""/>-->
<!-- –>-->
<!-- </table>-->
<table tableName="t_phonebook"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>
“http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd”{
file–>settings…–>languages & frameworks–>Schemas and DTDs–>点击右下边的加号忽略它的意思。
直接fecth 它就可以了(直接解决问题,优于上面的方式,尴尬的是第二天又不行了。算了还是忽略吧)
}
以插件的形式运行,需要写到plugin里面,指定配置文件的路径。
mysql的依赖是必须的,否则会报找不到驱动。tk.mybatis是用的通用mapper需要。
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${tkMapper.generator.version}</version>
</dependency>
</dependencies>
</plugin>
方式1 :项目-edit configurations 的方式,新建一个maven 的命令启动
方式2 右键generatorConfig.xml:以插件的方式运行,就是多点了几次,但不用加任何配置。
https://jingyan.baidu.com/album/3052f5a1bacf31d6f21f863b.html?picindex=7
better-mybatis-generator插件的方式,所配置文件都由插件完成,不需要加xml配置文件,这是它的优点,也是它的缺点。缺点就是不方便我加一些东西,因为它本身写死了。