赞
踩
本文我们主要实战Mybatis官方的代码生成器:Mybatis Generator(MBG),掌握它以后,可以简化大部分手写代码,我们只需要写复杂逻辑代码!
通过前几篇,我们掌握了在SpringBoot下Mybatis的基本用法,操作步骤回顾一下:
在实际开发中,你会发现有很多重复的工作:
重复不符合我们程序员的风格:
本文就带大家实战一下Mybatis Generator,用它生成实战项目全部表的PO对象和基本增删改查代码!
Mybatis Generator(MBG)是Mybatis官方提供的一个代码生成工具,它可以根据数据库表自动生成对应的Java Model、Mapper和XML文件,甚至还可以生成一些高级查询功能,使用Mybatis-Generator可以大大降低开发者的工作量,提高开发效率!
支持使用Maven插件生成,也支持编写Java代码生成,还有命令行等等多种方式!
支持生成XML映射文件风格的代码,也支持生成全注解风格的代码!
首先在工程tg-book-dal的pom.xml中,根节点project下添加build节点,如下:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.7</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> </dependencies> </plugin> </plugins> </build>
然后刷新tg-book-dal的Maven依赖,你就能看到mybatis-generator插件了,如下图:
注意,这时生成时会报错,因为我们还需要添加配置文件,接着向下看.
在tg-book-dal 的 src/main/resources 下 添加配置文件: generatorConfig.xml ,用于配置生成风格,数据库连接、生成代码包路径、生成哪些表
等等,各配置参数详解参考注释:
注意
:==我增加了几个实用的可选配置,像生成时覆盖原文件、去除注释、自增主键列、columnOverride ==
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- MyBatis3Simple风格 --> <context id="simple" targetRuntime="MyBatis3Simple"> <property name="javaFileEncoding" value="UTF-8"/> <!--生成mapper.xml时覆盖原文件--> <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/> <commentGenerator> <!-- 是否去除自动生成的注释 true:是 : false:否。 自动生成注释太啰嗦,可以编码扩展CommentGenerator --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!-- 数据库连接 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=true&serverTimezone=UTC" userId="root" password="root"> <!-- 设置为true就只读取db_book下的表, 否则会优先读取到mysql的user表 --> <property name="nullCatalogMeansCurrent" value="true"/> </jdbcConnection> <!-- 生成PO的包名和位置 --> <javaModelGenerator targetPackage="org.tg.book.dal.po.mbg" targetProject="src/main/java"/> <!-- 生成XML映射文件的包名和位置 --> <sqlMapGenerator targetPackage="org.tg.book.dal.mapper.mbg" targetProject="src/main/resources"/> <!-- 生成Mapper接口的包名和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="org.tg.book.dal.mapper.mbg" targetProject="src/main/java"/> <!-- 要生成对应表配置 --> <table tableName="user" domainObjectName="User" > <!-- 自增主键列 --> <generatedKey column="id" sqlStatement="MYSQL" identity="true"/> <!-- tinyint映射为Integer --> <columnOverride column="role" javaType="Integer" jdbcType="TINYINT"/> </table> </context> </generatorConfiguration>
上面配置的是MyBatis3Simple风格,只配置了一个表:user,双击插件的mybatis-generator:generate以后,生成的代码如下:
MyBatis3Simple风格生成的代码比较精简,看一看UserMapper的接口方法,只有基本的增删改查方法:
public interface UserMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
User selectByPrimaryKey(Integer id);
List<User> selectAll();
int updateByPrimaryKey(User record);
}
我们再看看MyBatis3风格,只需要将 targetRuntime=“MyBatis3Simple” 修改为 targetRuntime=“MyBatis3”,然后再双击插件的mybatis-generator:generate,就可以看到增加了 “by example” 和 “selective” 方法
=null
的字段,但同样也需要注意,你无法用它将字段设置为null。 Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。