MyBatis-Generator反向生成器的使用(保姆级教程)
为什么要用MyBatis-Generator反向生成器?
在编写Mybatis的mapper层的xml文件时,如果pojo层和数据库中对应表的实体类数量过多,此时即使是利用MyBatis来做一些简单的查询,xml文件中大量的sql语句指令的编写也会使得开发的效率变低(简单的查询都是如此,更别说复杂的查询了)。而利用MyBatis-Generator反向生成器不仅可以自动生成pojo中的实体类,还可以生成dao层中的接口和mapper层中的xml文件。
MyBatis中-Generator反向生成器的使用步骤讲解
第一步:在pom.xml文件中导入以下依赖(包括1和2和3都在pom.xml文件中完成)
1.导入generator生成的依赖
具体的目录结构是
<dependencies>
<dependency>
-
<!--根据实体表反向生成实体类的插件-->
-
<dependency>
-
<groupId>org.mybatis.generator</groupId>
-
<artifactId>mybatis-generator-maven-plugin</artifactId>
-
<version>1.4.0</version>
-
</dependency>
2.导入反向生成器插件的依赖
具体的目录结构是
<build>
<pluginManagement>
<plugins>
<plugin>
-
<!--mysql的驱动是给下面这个反向生成的插件使用的 -->
-
<plugin>
-
<groupId>org.mybatis.generator</groupId>
-
<artifactId>mybatis-generator-maven-plugin</artifactId>
-
<version>1.4.0</version>
-
<dependencies>
-
<dependency>
-
<groupId>mysql</groupId>
-
<artifactId>mysql-connector-java</artifactId>
-
<version>8.0.26</version>
-
<scope>runtime</scope>
-
</dependency>
-
</dependencies>
-
</plugin>
3.然后手动导入1和2中的这些依赖
做法:在pom.xml文件中 右键鼠标点击Maven 然后点击 reloadProject
第二步:在webapp项目下创建对应的一些包(一步一步看不用急)
1.在webapp项目的src/main/java 下分别创建pojo 和 dao 和 vo 以及 bo 包(包名最好见名知意)
2.再在webapp项目的src/main/resources下创建mappers目录
3.然后在webapp项目的src/main/resources下新建文件generatorConfig.xml文件
generatorConfig.xml文件内容如下(文件中包含各个标签和其对应属性的解释)
-
-
-
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
-
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
-
-
<!--https://blog.csdn.net/weixin_45433031/article/details/121759041 详解见此路径-->
-
<!--反向把数据库对象生成java对象 反射(获取字段) io(写数据) jdbc(查数据)-->
-
<generatorConfiguration>
-
<!-- 读取jdbc配置文件-->
-
<properties resource="jdbc.properties"></properties>
-
<!--targetRuntime:设置生成的文件适用于那个 mybatis 版本-->
-
<context id="myGenerator" targetRuntime="MyBatis3">
-
<!--去除注释-->
-
<commentGenerator>
-
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
-
<property name="suppressAllComments" value="true"/>
-
</commentGenerator>
-
<!--jdbcConnection中的EL表达式的取值的文件为jdbc.properties 在后面的步骤中会提及-->
-
<jdbcConnection driverClass="${jdbc.driver}"
-
connectionURL="${jdbc.url}"
-
userId="${jdbc.username}"
-
password="${jdbc.password}">
-
</jdbcConnection>
-
<!--不使用BigDecimal类型 java类型解析器-->
-
<!--非必须,类型处理器,在数据库类型和java类型之间的转换控制-->
-
<javaTypeResolver >
-
<!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 -->
-
<!-- 不是 double 和 long 类型 -->
-
<!-- 使用常用的基本类型代替 sql 包下的引用类型 -->
-
<property name="forceBigDecimals" value="true" />
-
</javaTypeResolver>
-
<!--生成的东西放哪 pojo-->
-
<javaModelGenerator targetPackage="org.example.pojo" targetProject="src/main/java">
-
<property name="trimStrings" value="true" />
-
</javaModelGenerator>
-
<!--自动生成xml-->
-
<!-- targetPackage:生成的实体类所在的包 -->
-
<!-- targetProject:生成的实体类所在的硬盘位置 -->
-
<!--使用注解开发时不需要sql的xml文件 所以不需要此标签 -->
-
<sqlMapGenerator targetPackage="/mappers/" targetProject="src/main/resources">
-
<property name="enableSubPackages" value="true" />
-
</sqlMapGenerator>
-
<!--自动生成dao-->
-
<!-- targetPackage 和 targetProject:生成的 interface 接口文件的包和位置 -->
-
<!--ANNOTATEDMAPPER使用注解开发 XMLMAPPER使用sqlxml的注解开发 -->
-
<javaClientGenerator type="XMLMAPPER" targetPackage="org.example.dao" targetProject="src/main/java">
-
</javaClientGenerator>
-
-
<!-- tableName是数据库中的表名,domainObjectName是生成的JAVA pojo模型(即对应的pojo包下和数据库中表对应的实体类的类)名,后面的参数不用改,要生成更多的表就在下面继续加table标签 -->
-
<table schema="TZRDB" tableName="NEWS" domainObjectName="News" enableCountByExample="false" enableUpdateByExample="false"
-
enableDeleteByExample="false" enableSelectByExample="false"
-
selectByExampleQueryId="false">
-
</table>
-
<table tableName="NEWSTYPE" domainObjectName="NewsType" schema="TZRDB"
-
enableCountByExample="false" enableUpdateByExample="false"
-
enableDeleteByExample="false" enableSelectByExample="false"
-
selectByExampleQueryId="false">
-
</table>
-
-
</context>
-
</generatorConfiguration>
jdbc.properties文件内容如下(主要配置数据库的连接信息)
-
# 每个配置后一定不要加分号 且参数一定要加. 不然取不到值
-
# 加载驱动的类
-
jdbc.driver=com.mysql.cj.jdbc.Driver
-
# url固定格式 jdbc:mysql://域名(如果为本机就是localhost):端口号/连接的数据库名?(后面的三个参数可以不加 加了后的意思为 使用unicode编码 支持的编码格式为UTF-8)
-
jdbc.url=jdbc:mysql://192.168.0.0:3306/UserDB?useUnicode=TRUE&characterEncoding=utf8&useSSL=TRUE
-
# 数据库连接的用户名
-
jdbc.username=root
-
# 数据库连接的密码
-
jdbc.password=123456
以上1、2、3小步完成后的目录结构如下
第三步:执行以下操作(按顺序执行),生成反向生成器,自动生成pojo中的实体类以及dao中的接口和mappers下的映射文件
(注意里面有一条命令为 : mybatis-generator:generate )
填写的命令为:mybatis-generator:generate
第四步:修改 webapp项目下src/main/resources下的mybatis的核心配置文件mybatis.xml的sqlxml映射名(也即mappers下的xml名字)
MyBatis核心配置文件mybatis.xml文件的内容如下
-
-
-
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
-
"http://mybatis.org/dtd/mybatis-3-config.dtd">
-
<configuration>
-
<!--读取jdbc.properties配置文件-->
-
<properties resource="jdbc.properties"></properties>
-
<settings>
-
<!--延迟加载开关: 如false,那么查询就直接调用子查询 如果为true则在需要的时候再去调用子查询-->
-
<setting name="lazyLoadingEnabled" value="true"/>
-
<!--true是调用自身查询的结果字段也会去执行子查询 所以调成false只有在查询子查询中的字段才会去调用子查询-->
-
<setting name="aggressiveLazyLoading" value="false"/>
-
</settings>
-
<typeAliases>
-
<!--将所有的此包中的类转为驼峰命名 如将Emp转为emp等 适用于一个包中有多个类的情况-->
-
<package name="org.example.pojo"/>
-
<package name="org.example.vo"/>
-
<package name="org.example.bo"/>
-
</typeAliases>
-
<!--这种方式也可以配置别名 适用于包中类的数量较少的情况 为类配置别名 -->
-
<!--<typeAliases>
-
<typeAlias alias="Author" type="domain.blog.Author"/>
-
<typeAlias alias="Blog" type="domain.blog.Blog"/>
-
<typeAlias alias="Comment" type="domain.blog.Comment"/>
-
<typeAlias alias="Post" type="domain.blog.Post"/>
-
<typeAlias alias="Section" type="domain.blog.Section"/>
-
<typeAlias alias="Tag" type="domain.blog.Tag"/>
-
</typeAliases>-->
-
-
<!--默认使用哪个环境-->
-
<environments default="development">
-
<!--配置不同的数据库环境 -->
-
<environment id="development">
-
<!--JDBC(常用,使用JDBC管理事务) MANAGED (不常用,容器管理事务)-->
-
<transactionManager type="JDBC"/>
-
<!---->
-
<dataSource type="POOLED">
-
<!--这里一定要加jdbc. 不然取不到值-->
-
<property name="driver" value="${jdbc.driver}"/>
-
<property name="url" value="${jdbc.url}"/>
-
<property name="username" value="${jdbc.username}"/>
-
<property name="password" value="${jdbc.password}"/>
-
</dataSource>
-
</environment>
-
</environments>
-
<!--加载pojo的sql映射文件(由于是注解开发所以和dao在同一个包中)-->
-
<!--<mappers>
-
<package name="org.example.dao"/>
-
</mappers>-->
-
<!--加载pojo的sqlxml映射文件-->
-
<mappers>
-
<!--使用Mybatis-generator反向生成器生成代码后记得修改mybatis.xml中的mapper的映射路径(即sqlxml的映射路径)-->
-
<!--默认前面加了左斜杆 自己不能加左斜杆不然会报错 为编译后的根路径-->
-
<mapper resource="mappers/NewsMapper.xml"/>
-
<mapper resource="mappers/NewsTypeMapper.xml"/>
-
<mapper resource="mappers/HUserMapper.xml"/>
-
<mapper resource="mappers/HDeptMapper.xml"/>
-
<mapper resource="mappers/SStudentMapper.xml"/>
-
<mapper resource="mappers/STeacherMapper.xml"/>
-
</mappers>
-
</configuration>
至此反向生成器便会成功在第二步创建的包下生成类和接口以及xml映射文件
关于MyBatis-Generator 反向生成器的一些额外的补充
//使用mybatis-generator反向生成器可以自动生成pojo中对应数据库中表的实体类以及dao中对应sql映射文件的接口以及mapper中的sql映射文件
//但是自动生成sql映射文件后 需要在mybatis.xml文件中配置sqlxml的新路径,其实路径没变只是名字变了 (xmlmapper开发)
//注解开发 ANNOTATEDMAPPER 不需要sqlxml了所以mybatis.xml中的mapper的source配置去掉 改为mapper的package告诉dao的位置
//且注解开发不需要generatorConfig.xml中的sqlMapGenerator标签
//使用mybatis-generator反向生成器一定要使用targetRuntime配置mybatis的版本
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcaheb
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01