经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
是什么让我节省了60%的编码时间?使用MBG
来源:cnblogs  作者:万猫学社  时间:2020/11/16 11:17:19  对本文有异议

MyBatis Generator简介

业务需求不断变更,数据库表结构不断修改,是我们逃不出的宿命。工欲善其事,必先利其器,是时候祭出神器了:MyBatis Generator(简称:MBG),它是一个用于所有版本MyBatis的代码自动生成器。它可以根据数据库的表自动为项目生产对应的实体类、Mapper、DAO,包括简单CRUD数据库操作(创建、查询、更新、删除)。解放了我们的双手,不必做重复性的机械工作。节省下不少时间,不用再苦哈哈的加班了,还可以和妹纸去约会。(前提是你得先有个妹纸??)

创建一个MySQL表

为了方便演示创建一个MySQL表,表结构比较简单,是一个用户信息表:

  1. CREATE TABLE `user_info` (
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(255) DEFAULT NULL,
  4. `age` int(11) DEFAULT NULL,
  5. `create_time` datetime DEFAULT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

文章持续更新,微信搜索「万猫学社第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

创建一个SpringBoot项目

以使用IntelliJ IDEA为例,创建一个SpringBoot项目。点击File->New->Projects...,选择Spring Initializr,如下图:

点击Next,输入GroupArtifact等信息,如下图:

点击Next,选择Web,并勾选Spring Web,如下图:

点击Next,输入Project nameProject location等信息,如下图:

最后,点击Finish,一个SpringBoot项目就创建完了。

引入MyBatis Generator的Maven插件

在pom.xml的plugins节点中添加如下内容:

  1. <plugin>
  2. <groupId>org.mybatis.generator</groupId>
  3. <artifactId>mybatis-generator-maven-plugin</artifactId>
  4. <version>1.4.0</version>
  5. <configuration>
  6. <overwrite>true</overwrite>
  7. </configuration>
  8. <dependencies>
  9. <dependency>
  10. <groupId>mysql</groupId>
  11. <artifactId>mysql-connector-java</artifactId>
  12. <version>${mysql.version}</version>
  13. </dependency>
  14. </dependencies>
  15. </plugin>

配置MyBatis Generator的Maven插件

在resources文件夹中创建一个generatorConfig.xml文件,其内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <generatorConfiguration>
  6. <properties resource="application.properties"></properties>
  7. <!--defaultModelType用于指定生成对象的样式,flat表示每一张表只生成一个实体类,这个实体类包含表中的所有字段。-->
  8. <context id="MySQLTables" targetRuntime="MyBatis3" defaultModelType="flat">
  9. <property name="javaFileEncoding" value="UTF-8"/>
  10. <!-- 生成的实体类实现序列化接口 -->
  11. <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
  12. <commentGenerator>
  13. <property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"/>
  14. </commentGenerator>
  15. <!--数据库连接信息-->
  16. <jdbcConnection driverClass="${spring.datasource.driverClassName}"
  17. connectionURL="${spring.datasource.url}"
  18. userId="${spring.datasource.username}"
  19. password="${spring.datasource.password}">
  20. </jdbcConnection>
  21. <!-- 配置生成的实体类位置 -->
  22. <javaModelGenerator targetPackage="one.more.mybatisgenerator.model" targetProject="src/main/java">
  23. <!-- 设置是否在setter方法中,对String类型字段调用trim()方法 -->
  24. <property name="trimStrings" value="true"/>
  25. </javaModelGenerator>
  26. <!-- 配置接口位置 -->
  27. <!-- type设置为ANNOTATEDMAPPER,基于注解的Mapper,不会有对应的xml文件生成-->
  28. <javaClientGenerator targetPackage="one.more.mybatisgenerator.mapper" targetProject="src/main/java"
  29. type="ANNOTATEDMAPPER">
  30. </javaClientGenerator>
  31. <!-- 配置数据库表 -->
  32. <table tableName="user_info">
  33. <!--在生成的insert元素上添加useGeneratedKeys=”true”和keyProperty属性-->
  34. <generatedKey column="id" sqlStatement="JDBC"/>
  35. </table>
  36. </context>
  37. </generatorConfiguration>

以上就是最基础简介的配置了,在实际的开发过程中就够用。如果有小伙伴还有需要更多的配置功能,可以官方网站(https://mybatis.org/generator/configreference/xmlconfig.html)查看。

文章持续更新,微信搜索「万猫学社第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

自动生成代码

下面就是最激动人心的时刻了,一键自动生成代码。在Maven插件工具栏中,可以看到mybatis-generator插件,双击其中的generate选项即可,如下图:


构建成功以后,就可以看到生成的代码了,如下图:

验证自动生成的代码

验证之前还有一个步骤不要漏掉,就是在启动类上加上MapperScan注解,比如:

  1. @SpringBootApplication
  2. @MapperScan("one.more.mybatisgenerator.mapper")
  3. public class MybatisGeneratorDemoApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(MybatisGeneratorDemoApplication.class, args);
  6. }
  7. }

文章持续更新,微信搜索「万猫学社第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

新增数据

随机生成一个UserInfo示例,插入到数据库中:

  1. public UserInfo add() {
  2. Random random = new Random(System.currentTimeMillis());
  3. UserInfo userInfo = new UserInfo();
  4. userInfo.setName("name" + random.nextInt(100));
  5. userInfo.setAge(random.nextInt(100));
  6. userInfo.setCreateTime(new Date());
  7. int rows = userInfoMapper.insert(userInfo);
  8. System.out.println("rows:" + rows);
  9. return userInfo;
  10. }

查询数据

查询数据库里age大于某个值的user_info数据:

  1. public List<UserInfo> getGreaterThan(Integer age) {
  2. UserInfoExample example = new UserInfoExample();
  3. Criteria criteria = example.createCriteria();
  4. criteria.andAgeGreaterThan(age);
  5. return userInfoMapper.selectByExample(example);
  6. }

完整的示例源码

完整的示例源码可以去https://github.com/heihaozi/mybatis-generator-demo下载。

微信公众号:万猫学社

微信扫描二维码

关注后回复「电子书」

获取12本Java必读技术书籍

原文链接:http://www.cnblogs.com/heihaozi/p/13983939.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号