Mybatis自动生成详解——附代码

  最近一直忙于工作,也没想起来写博客,说白了就是懒,但后来发现我上篇文章是有人点赞关注的,于是又重新有了动力。刚好最近在单独做一个小程序后端,就分享一下项目中用到的一些技术吧,希望对你们有用,还望大佬轻喷。

  • 为什么要用Mybatis自动生成

  1. 方便。能够一键生成持久层所需的Mapper、xml、以及PO类。
  2. 全面。自动生成的Example类可以动态的加载SQL条件,能满足我们90%甚至更高的SQL需求。
  3. 安全。自动生成的Mybatis代码几乎没有bug,或许有,但目前我还没有遇到过。而且,我自认为我写的代码和自动生成的代码是没有可比性的。
  • 怎么用

  1. 导入Mybatis自动生成依赖。spring依赖和mybatis依赖这里省略。有需要的可以找spring整合Mybatis。一搜全都是。
 <!--        mybatis自动生成-->
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.7</version>
            </dependency>

    2.创建mybatis-generator.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>
    <!-- 数据库驱动 -->
    <context id="DB2tables" targetRuntime="MyBatis3" >

    <!-- 去掉生成出来的代码的注解 -->
    <commentGenerator>
        <property name="suppressAllComments" value="true" />
        <property name="suppressDate" value="true" />
    </commentGenerator>

<!--       数据库链接URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/你的数据库名称?serverTimezone=UTC"
                        userId="你的数据库账号"
                        password="你的数据库密码">
            <property name="nullCatalogMeansCurrent" value="true"/>
        </jdbcConnection>

        <!--        类型解析-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

    <!-- 生成模型的包名和位置 -->
    <javaModelGenerator targetPackage="com.example.xcx.dao.po.product"这里写你要把生成的po类放到哪个包下面
                        targetProject="src/main/java">
        <property name="enableSubPackages" value="true" />
    <!--从数据库返回的值去除前后空格-->
        <property name="trimStrings" value="true" />
    </javaModelGenerator>



        <!-- 生成映射文件的包名和位置 -->
        <sqlMapGenerator targetPackage="mapper"这里写你要把生成的xml文件放到哪个目录下面
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.xcx.dao.api.product"这里写你要把生成的dao也就是mapper文件放到哪个包下面
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 -->
        <table tableName="你的数据库表名" domainObjectName="对应要生成的实体类的名称"/>

    </context>
</generatorConfiguration>

里面每个配置的注释我都写在里面了,根据自己的项目情况配置。 

3.将这个配置文件路径配置到项目的pom文件中,告诉spring自动生成的时候扫描加载这个配置文件

<build>
    <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>

            <configuration>
                <configurationFile>${basedir}/src/main/resources/mybatis-generator.xml</configurationFile>
                <overwrite>true</overwrite>
                <verbose>true</verbose>
            </configuration>

            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.18</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
           </plugin>
     </plugins>
</build>

看到这里想必很多小伙伴都不理解为什么就加一个扫描路径,还需要mysql依赖包呢? 况且我在build外面的dependency中已经配置过mysql的包了,这里为什么还要再配置一遍呢?

这是因为mybatis自动生成本就是一个插件,它只依赖了我们前面导入的mybatis自动生成的jar包,它不知道我们会拿它去连什么数据库可能是mysql,也可能是Oracle、SqlServer、sqllite.....所以需要我们自己添加数据库依赖。我们前面在dependency中添加的数据库依赖是用于我们项目操作数据库的,而这里的引入,是为了使mybatis-generator知道我们数据库中都有什么表,什么字段,什么类型。可能两处依赖有共用的方法,只是我还不知道,如果真的有,还望不吝赐教。

好了。配置到这里就结束了,很简单,却很好用。这时候我们更新一下项目(eclipse可以使用maven update ;IDEa可以点击import或reimport)就能看到我们的mybatis自动生成插件了。如图:

把配置文件中需要配置的信息都配置正确,我们就可以双击mybatis-generator生成代码了 

看看我们生成的mapper文件 

 po类文件

xml文件

好的,生成的文件都生成完了,那应该怎么用呢?文章前面有提到,mybatis自动生成的代码非常全面,能解决我们90%甚至以上的SQL需求,首先我们大概讲解一下example文件

   Example文件是mybatis根据我们的表字段生成的条件类。我们可以用改文件中的方法组合出任何我们想要的where条件,mybatis在Example文件中创建了一个内部的抽象类GeneratedCriteria,里面封装了我们表中各个字段的各种方法。

调用的时候,我们通过创建Example类然后example.createCriteria()创建GeneratedCriteria对象就可以调用其中的方法了。下面是示例

关于 GeneratedCriteria对象里面对我们各个字段的各种方法的释义,由于是在是太多了,可以看我下篇文章专门讲解Example类,本篇文章只说怎么生成和使用。

好了,到这里我们生成的持久层文件就能灵活使用了。如果这篇文章有帮到你,请给作者一个点赞,一个关注。你们的支持,是我持续更新的动力。如果有哪里不对的地方,也请留言指出,共同进步。

 

  • 21
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值