目录
[一、MyBatis Generator 的使用](#一、MyBatis Generator 的使用)
[1.1.1、在 pom.xml 中引入依赖](#1.1.1、在 pom.xml 中引入依赖)
[1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件](#1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件)
[1.1.3、自动生成类 和 映射文件](#1.1.3、自动生成类 和 映射文件)
[1.1.4、在 Insert 标签中添加获取主键值的选项](#1.1.4、在 Insert 标签中添加获取主键值的选项)
[1.1.5、扫描配置:添加 @Mapper 注解 / 添加扫描注解](#1.1.5、扫描配置:添加 @Mapper 注解 / 添加扫描注解)
[1.1.6、配置 mybatis](#1.1.6、配置 mybatis)
一、MyBatis Generator 的使用
1.1、生成类和映射文件
1.1.1、在 pom.xml 中引入依赖
在 properties 标签中加入版本号.
XML
<mybatis-generator-plugin-version>1.4.1</mybatis-generator-plugin-version>
在 build => plugins 标签中加入如下配置
XML
<!-- mybatis ⽣成器插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mybatis-generator-plugin-version}</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<phase>deploy</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<!-- 相关配置 -->
<configuration>
<!-- 打开⽇志 -->
<verbose>true</verbose>
<!-- 允许覆盖 -->
<overwrite>true</overwrite>
<!-- 配置⽂件路径 -->
<configurationFile>
src/main/resources/mybatis/generatorConfig.xml
</configurationFile>
</configuration>
</plugin>
上述配置中需要注意的是 "配置文件路径",这个路径就是用来生成 实体类和映射文件 配置规则的位置.
1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件
这个文件就是用来描述生成规则的.
根据路径(src/main/resources/mybatis),在 mybatis 目录下创建 generatorConfig.xml 文件.
Ps:下述配置文件中需要修改的有 数据库连接、实体类和映射文件的路径、数据库表名
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>
<!-- 驱动包路径,location中路径替换成⾃⼰本地路径 -->
<classPathEntry location="D:\class\source\mysql-connector-java-5.1.49.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 禁⽤⾃动⽣成的注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!-- 连接配置 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/javanav_db?
characterEncoding=utf8&useSSL=false"
userId="root"
password="1111">
</jdbcConnection>
<javaTypeResolver>
<!-- ⼩数统⼀转为BigDecimal -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 实体类⽣成位置 -->
<javaModelGenerator targetPackage="com.example.cyk.model"
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="com.example.cyk.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 配置⽣成表与实例, 只需要修改表名tableName, 与对应类名domainObjectName 即
可-->
<table tableName="j_article" domainObjectName="Article"
enableSelectByExample="false"
enableDeleteByExample="false" enableDeleteByPrimaryKey="false"
enableCountByExample="false"
enableUpdateByExample="false">
<!-- 类的属性⽤数据库中的真实字段名做为属性名, 不指定这个属性会⾃动转换 _ 为
驼峰命名规则-->
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="j_article_reply" domainObjectName="ArticleReply"
enableSelectByExample="false"
enableDeleteByExample="false" enableDeleteByPrimaryKey="false"
enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="j_board" domainObjectName="Board"
enableSelectByExample="false" enableDeleteByExample="false"
enableDeleteByPrimaryKey="false" enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="j_message" domainObjectName="Message"
enableSelectByExample="false"
enableDeleteByExample="false" enableDeleteByPrimaryKey="false"
enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="j_user" domainObjectName="User"
enableSelectByExample="false" enableDeleteByExample="false"
enableDeleteByPrimaryKey="false" enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
</context>
</generatorConfiguration>
注意:
驱动包路径是自己本地仓库的路径
但一定注意!! 需要在非中文的目录下,因此你可以把这个驱动包拷贝出来,放到一个非中文的目录中即可.
1.1.3、自动生成类 和 映射文件
重新加载Maven项⽬,在Plugins节点下出现mybatis-generator,双击运⾏,在对应的目录下⽣成相应的类与映射⽂件:
接着你就可以看到对应的生成了
1.1.4、在 Insert 标签中添加获取主键值的选项
在生成的 xml 文件中,给每一个 insert 标签都添加以下属性:useGeneratedKeys="true" keyProperty="id"
XML
<!-- useGeneratedKeys = true -->
<!-- keyProperty = 主键字段-->
<!-- 当插⼊⼀条数据后,可以通过user.getId()获取到⾃动⽣成的Id值,如果⽅法中需要⽴即获取Id值,加⼊这个配置 -->
<insert id="insert" parameterType="com.example.cyk.model.User"
useGeneratedKeys="true" keyProperty="id" >
Ps:这个选项也可以自动生成,但是不理想(有些问题)
1.1.5、扫描配置:添加 @Mapper 注解 / 添加扫描注解
有两种方式配置扫描 Mapper 接口.
1)给每个 mapper 包下的 mapper 接口都添加 @Mapper 注解.
2)给启动类上 或者 新建一个配置类(有 @Configuration 注解)加上 @MapperScan("com.example.cyk.mapper") 注解.
1.1.6、配置 mybatis
在 yml 文件中配置
XML
mybatis:
mapper-locations: classpath:mapper/**/*Mapper.xml
1.1.7、测试
java
@SpringBootTest
public class TestMapper {
@Autowired
private UserMapper userMapper;
@Test
public void select() {
User user = userMapper.selectByPrimaryKey(1L);
System.out.println(user);
}
}